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...