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