在WildFly 8.2(使用JMS提供者HornetQ)上創建一個JMS隊列,並且讓這個隊列「激活」了一個消息驅動bean,我看到如果生產者連續快速地向隊列發送多條消息,消息驅動bean不會按照它們發送的順序處理它們。是否可以配置WildFly,以便按照發送順序處理消息(先進先出)?有沒有辦法通過MDB在WildFly上進行消息隊列處理?
1
A
回答
2
(我覺得已經明白閱讀https://stackoverflow.com/a/6744508/999264後會發生什麼)
有其執行消息驅動Bean(MDB),每個消息一個線程的onMessage
方法,因此,如果多個郵件到達時多線程幾乎同時,人們無法知道哪個消息將首先被處理(因爲無法知道哪個線程將首先執行onMessage
執行)。唯一的方法是確保線程數爲1:在這種情況下,唯一的線程首先處理第一條消息,然後處理第一條消息,依此類推。
在WildFly和JBoss中,註釋@MessageDriven
具有「激活配置屬性」maxSession
,據我瞭解,它控制用於處理從隊列到達MDB的消息的最大線程數。其值設置爲1,如下面
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "java:/jms/queue/myOwnQueue"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "1")})
public class MyOwnMDB implements MessageListener {
public void onMessage(Message message) {
System.out.println("message received " + message.toString());
}
}
和運行代碼,我看到確實消息正在處理,由消息驅動bean,在其中它們被髮送的順序。
自改名爲之後,我改變了問題的標題「是否有辦法在WildFly FIFO上創建消息隊列?」,看起來不正確:隊列本身是 FIFO(實際上,我發現寫在某處這是JMS規範的一部分,但我無法確定確切的位置)。
相關問題
- 1. 的RabbitMQ - 有沒有辦法回到舊消息在隊列中
- 2. 有沒有辦法從自己的方法處理AWT隊列?
- 3. 有沒有辦法通過vSphere API執行批處理?
- 4. 有沒有辦法通過pika列出rabbitmq中的隊列?
- 5. 隊列中沒有消息
- 6. 暫停MDB消息處理
- 7. 有沒有辦法通過Google Talk使用JavaScript發送消息?
- 8. 有沒有辦法通過Rails中的XMPP接收消息?
- 9. 有沒有辦法通過Selenium/GhostDriver查看PhantomJS console.log消息?
- 10. 發送消息與處理程序沒有隊列或延遲
- 11. WCF MSMQ消息隊列沒有被處理
- 12. MessageDrivenBean不處理消息[Wildfly]
- 13. 沒有消息隊列的進程間(服務)通信
- 14. 有沒有辦法獲得有關QNetworkAccessManager隊列的信息?
- 15. 通過消息隊列
- 16. 有沒有辦法從Azure中的服務總線隊列中刪除待處理的消息?
- 17. 有沒有辦法丟棄APC隊列?
- 18. 通道處理程序沒有在netty 4.0上寫消息
- 19. 通過消息隊列進行Java和C#通信
- 20. 有沒有辦法通過ASC對elasticsearch _score進行排序?
- 21. Apache Camel - 只有當前沒有處理消息時才發送到seda隊列?
- 22. 隊列消費者有待處理的消息,但他們沒有得到處理
- 23. 有沒有辦法通過命令行生成OpenClient .NET代理?
- 24. 消息隊列+ ajax沒有觸發
- 25. STOMP消息沒有到達隊列
- 26. 有沒有辦法通過python訪問Borland Star團隊?
- 27. 有沒有辦法與Android上的USB設備進行通信?
- 28. 有沒有辦法'處理'Environment.FailFast?
- 29. 有沒有更好的方法來計算消息隊列(MSMQ)中的消息?
- 30. 在NServiceBus中使用多態消息時,有沒有辦法控制消息處理程序的順序?
https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/5/html/HornetQ_User_Guide/ch30s03.html – 99Sono