// 可以在下面兩個地方進行設定
messageproducer producer = session.
createproducer
(queue)
; producer.
setdeliverymode
(deliverymode
.non_persistent)
;for
(int i =
0; i <
100; i++
)
2.1 普通topic
2.2 持久化topic
提供者
messageproducer producer = session.
createproducer
(topic)
;producer.
setdeliverymode
(deliverymode
.persistent)
;connection.
start()
;
消費者
connection connection =
getconnection()
;// 訂閱者id
connection.
setclientid
(clientname)
;session session = connection.
createsession
(false
,session
.auto_acknowledge)
;topic topic = session.
createtopic
(topic_name)
;// 持久化訂閱
topicsubscriber durablesubscriber = session.
createdurablesubscriber
(topic,
"remark.....");
connection.
start()
;durablesubscriber.
setmessagelistener
(new
messagelistener()
});system
.in.
read()
;
public
static
void
producequeuemessage()
throws
jm***ception
session.
commit()
;// 提交
}catch
(exception e)
finally
}
消費者
// 消費者開啟手動簽收後如果不簽收,則會重複消費
session session = connection.
createsession
(false
,session
.client_acknowledge)
;queue queue = session.
createqueue
(queuename)
;messageconsumer consumer = session.
createconsumer
(queue)
;while
(true
)else
}
提供者
消費者
message message = durablesubscriber.
receive()
;while
(null
!=message)
本地節點
public
static
void
getbroker()
throws
exception
Kafka訊息可靠性
如果mq沒有類似資料庫事務結構和保證,是不可能達到訊息投遞100 可靠的,極端情況下訊息投遞要麼丟失或重複。下面咋們從producer,broker,consumer的角度分析一下kafka中會出現哪些情況。目前生產者傳送訊息 request.required.acks 有三種方式。acks 0 p...
十二 訊息可靠性
持久化可以提高rabbitmq的可靠性,以防在異常情況 重啟 關閉 右機等 下的資料丟失。rabbitmq的持久化分為三個部分 持久化客戶端 public class send catch ioexception e catch timeoutexception e finally catch io...
ActiveMQ訊息的可靠性
我們在activemq訊息持久化訂閱中,介紹了對topic模式下的訊息進行持久化訂閱,使其在暫無消費者消費或activemq服務重啟的情況下,不會導致訊息的丟失,這裡其實就是保證了一定程度的訊息可靠性。那麼還會在其他地方傳送訊息不可靠的情況麼,首先我們從訊息的生產及消費的流程中來看,訊息有生產者傳送...