我是Java Messaging Service的新手,並不完全確定它是如何工作的。我在NetBeans中使用JMS和Java EE項目。我使用的服務器類型是glassfish 3.這是我的情況:Java EE和glassfish服務器發生Java消息傳遞服務問題
我有一個程序創建兩個線程,A和B.這兩個線程通過我創建的兩個隊列服務器資源在彼此之間發回消息和第四個消息。下面是一系列的假設被傳遞迴和第四A和B.
之間的消息什麼是假設發生:
1. A is started
2. B is started
3. A sends B a message, M1 (producer.send(m1))
4. B receives M1 and does some stuff (consumer.receive())
5. B sends A a message, M2
6. A receives M2 and does some stuff
7. A sends B a message, M3
8. B receives M3 and does some stuff
實際發生的:
1. A is started
2. B is started
3. B receives M3 and does some stuff (consumer.receive())
這種情況自從我在所有發送的消息之間的某個地方做了一個session.commit()之後就開始彈出。它幾乎就像我將隊列的狀態提交給某個文件或服務器,現在每次運行我的程序時,都會從保存的狀態初始化隊列。
我之所以首先添加提交的原因是因爲我的一條消息M2沒有被線程A接收到。線程B正在到達它的代碼部分,它通過生產者將M2發送到線程A .send(M2)(其中producer是一個MessageProducer對象)。線程A只會掛在consumer.receive()(其中consumer是MessageConsumer對象)。我再次檢查是否將M2發送到正確的Queue資源。