![](/img/trans.png)
[英]Is WebSphere MQ the default JMS provider in WebSphere AS 8 / 8.5?
[英]Trigger Monitor in JMS Provider like MQ Series
在Websphere MQ中,我可以配置隊列以在消息到達時觸發應用程序。
這樣,我可以擁有一個僅在需要時啟動的應用程序,而不必管理一個等待該隊列中消息的守護程序。
有關此處的更多信息
是否有提供此功能的開源JMS提供程序?
我嘗試過ActiveMQ,但沒有觸發。
qpid沒有像監視器觸發觸發功能那樣的websphere-MQ。 我知道ActiveMQ也不是,我懷疑其他JMS提供程序也可能如此。 但是,有可能推出您自己的監視器觸發。
自制監視器觸發將成為您必須管理的應用程序進程(盡管輕巧),您會更好地管理實際的應用程序線程本身嗎?
JMS規范定義了異步交付模式。 參見第4.5.2節 。 因此,您應該可以使用任何JMS提供程序來執行此操作。 異步偵聽器實現javax.jms.MessageListener
接口。 方法onMessage()
需要實現,並在訂閱的隊列上出現任何新消息時用作回調函數。
假設主應用程序隊列是mainQ
。 您可以在瀏覽模式下為mainQ
創建一個新的MessageListener
,以便實際上不消耗mainQ的任何消息。
Destination mainQ = (Destination) session.createQueue("mainQ; {mode: browse}");
MessageConsumer mainQConsumer = session.createConsumer(mainQ);
mainQConsumer.setMessageListener(this);
在onMessage()
函數中,您可以在單獨的triggerQ
創建新消息,也可以跳過此步驟而直接啟動應用程序。
public void onMessage(Message message)
{
TextMessage triggerMessage = session.createTextMessage("Trigger-start-Application-X");
Destination triggerQ = (Destination) session.createQueue("triggerQ");
triggerQProducer = session.createProducer(triggerQ);
this.triggerQProducer.send(triggerMessage);
// Or alternatively:
// if (!applicationIsActive()) activateApplication()
}
在此處查看完整的工作示例: https : //github.com/foragerr/qpid-trigger-demo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.