使用Apache Camel发布/订阅模式
生活随笔
收集整理的這篇文章主要介紹了
使用Apache Camel发布/订阅模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
發(fā)布/訂閱是一種簡單的消息傳遞模式,其中,發(fā)布者將消息發(fā)送到某個頻道,而無需知道誰將接收消息。 然后,通道負(fù)責(zé)將消息的副本傳遞給每個訂戶。 此消息傳遞模型允許創(chuàng)建松耦合和可伸縮的系統(tǒng)。
這是一種非常常見的消息傳遞模式,有許多方法可以在Apache Camel中創(chuàng)建一種pub-sub。 但是請記住,它們都是不同的并且具有不同的特征。 從最簡單到更復(fù)雜,這是一個列表:
- 組播 –僅與靜態(tài)的訂閱者列表一起使用,可以并行地將消息傳遞給訂閱者,如果其中一個訂閱者發(fā)生故障,則停止或異常繼續(xù)。
- 收件人列表 –與多播類似,但是允許在運行時(例如,在消息頭中)定義訂戶。
- SEDA –該組件使用BlockingQueue提供異步SEDA行為。 設(shè)置multipleConsumers選項后,可以將其用于異步發(fā)布訂閱消息。 如果沒有按時使用郵件,它還可以阻止已滿的郵件,設(shè)置隊列大小或超時發(fā)布。
- VM –與SEDA相同,但是可以跨多個CamelContext,只要它們在同一JMV中即可。 這是在Web容器中的Web應(yīng)用程序之間或OSGI容器中的捆綁軟件之間發(fā)送消息的一種很好的機制。
- Spring-redis – Redis具有pubsub功能,可以將消息發(fā)布到多個接收者。 可以通過名稱或使用模式匹配來訂閱頻道。 當(dāng)使用模式匹配時,訂戶將從所有與模式匹配的信道接收消息。 請記住,在這種情況下,如果多個模式與發(fā)送消息的同一通道匹配,則可能會收到一條以上的消息。
- JMS(ActiveMQ) –這可能是進行發(fā)布訂閱(包括持久訂閱)的最佳方法。 有關(guān)完整列表功能檢查ActiveMQ的網(wǎng)站。
- Amazon SNS / SQS –如果您需要一個真正可擴展且可靠的解決方案,那么SNS是必經(jīng)之路。 為SQS隊列訂閱該主題,將其變成持久訂閱者,并允許以后輪詢消息。 在這種情況下要記住的重要一點是,它不是很快,最重要的是,Amazon不保證您的消息按FIFO順序排列。
也有不那么流行的Camel組件提供發(fā)布-訂閱消息傳遞模型:
- websocket –它使用Eclipse Jetty Server,并且可以將消息發(fā)送到當(dāng)前連接的所有客戶端。
- hazelcast – SEDA實現(xiàn)了工作隊列,以支持異步SEDA體系結(jié)構(gòu)。
- guava-eventbus –駱駝和Google Guava EventBus基礎(chǔ)架構(gòu)之間的集成橋。
- spring-event –提供對Spring ApplicationEvent對象的訪問。
- eventadmin –在OSGi環(huán)境上接收OSGI事件。
- xmpp –實現(xiàn)XMPP(Jabber)傳輸。 在聊天室中發(fā)布消息也是pub-sub;)
- mqtt –與兼容MQTT的消息代理進行通信。
- amqp –使用Qpid項目的客戶端API支持AMQP協(xié)議。
- javaspace –一種用于處理任何與JavaSpace兼容的實現(xiàn)的傳輸。
您可以命名其他任何方式來進行發(fā)布-訂閱嗎?
翻譯自: https://www.javacodegeeks.com/2013/05/publishsubscribe-pattern-with-apache-camel.html
總結(jié)
以上是生活随笔為你收集整理的使用Apache Camel发布/订阅模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring MVC:表单处理卷。 4
- 下一篇: 建信养老飞月宝收益怎么不更新?