二 訊息可靠性

2021-10-07 19:27:38 字數 2187 閱讀 1421

// 可以在下面兩個地方進行設定

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服務重啟的情況下,不會導致訊息的丟失,這裡其實就是保證了一定程度的訊息可靠性。那麼還會在其他地方傳送訊息不可靠的情況麼,首先我們從訊息的生產及消費的流程中來看,訊息有生產者傳送...