ActiveMQ使用總結

2021-08-27 17:48:18 字數 2256 閱讀 7198

1、activemq支援訊息過濾設定規則和用法

selector支援下列幾種方式:

(1) string literals: "color ='blue'"

(2) byte strings: 「mybytes <> "0x0afc23"」

(3) numeric values: "noltemsinstock > 20"

(4) boolean literals true or false: "acctdetails=true"

(5) composite expressions: "type='car' and (color = 'blue' or color ='green') and weight> 2500"

使用方式:

(1)建立生產者在send函式之前新增過濾屬性:

message->setstringproperty("color",pcolor);

producer->send(message);

(2)在建立消費者createconsumer時進行如下設定:

std::string messagefilter="color ='blue'"

m_pconsumer = m_psession->createconsumer(m_pdestination, m_messagefilter);

m_pconsumer->setmessagelistener(this);

2、錯誤:channel was inactive for too long (伺服器訊息較長時間沒有訊息傳送時,客戶端會報這個錯誤)

解決方法:在建立連線的uri中加入: wireformat.maxinactivityduration=0

3、採用failover方式連線導致卡死

解決方法:不採用failover連線

4、activemq傳送模式

(1)activemq非同步傳送,只需新增引數transport.useasyncsend=true,具體如下:

brokeruri = "tcp:"

(2)activemq同步傳送,只需新增引數transport.useasyncsend=false,具體如下:

brokeruri = "tcp:"

其實activemq在預設情況下就是同步傳送,所以在同步傳送時可以簡寫為:

brokeruri = "tcp:"

5、錯誤:the session is closed(網路異常時客戶端會報出這個錯誤)

解決辦法:在建立連線的uri中加入: maxreconnectdelay=10000

maxreconnectdelay 最大重連間隔

6、activemq負責均衡

對broker採取了負載均衡和基於共享檔案系統的主備配置,這個時候,客戶端生產者和消費者的uri中用

failover:(tcp:

6、activemq的ack設定

根據不同的需要可以將ack設定為session::client_acknowledge 或  session::auto_acknowledge 預設為session::auto_acknowledge 如:

if( clientack )

session = connection->createsession( session::client_acknowledge);

else

session = connection->createsession( session::auto_acknowledge);

7、activemq的topic設定

根據不同的需要可以將topic設定為topic或  queue預設為queue如:

if(usetopic)

destination = session->createtopic(desturi);

else

destination = session->createqueue(desturi);

8、activemq的deliverymode設定(生產者時設定)

根據不同的需要可以將deliverymode設定為deliverymode::non_persistent或  deliverymode::persistent預設為deliverymode::non_persistent如:

if(usepersistent)

producer->setdeliverymode( deliverymode::persistent);

else

producer->setdeliverymode( deliverymode::non_persistent);

ActiveMQ使用總結

1 activemq支援訊息過濾設定規則和用法 selector支援下列幾種方式 1 string literals color blue 2 byte strings mybytes 0x0afc23 3 numeric values noltemsinstock 20 4 boolean lit...

activemq 使用總結

2 錯誤 channel was inactive for too long 伺服器訊息較長時間沒有訊息傳送時,客戶端會報這個錯誤 解決方法 在建立連線的uri中加入 wireformat.maxinactivityduration 0 3 採用failover方式連線導致卡死 解決方法 不採用fa...

ActiveMQ使用總結

1 activemq支援訊息過濾設定規則和用法 selector支援下列幾種方式 1 string literals color blue 2 byte strings mybytes 0x0afc23 3 numeric values noltemsinstock 20 4 boolean lit...