簡體   English   中英

通過JMS接收Java對象

[英]Receiving Java Objects over JMS

這真的是通過JMS接收POJO的方式嗎?

public void onMessage(Message msg) {
     ObjectMessage objMsg = (ObjectMessage) msg;
     if(objMsg.getObject() instanceof <<sometype>>) {
        //do something 
     }
 }

我是否必須轉換為ObjectMessage。 實際上我必須檢查msg是否也可以轉換為ObjectMessage。

還是我想念一些東西?

謝謝

JMS Spring Doc引用示例,正如您從示例中看到的,我們需要檢查消息是否是TextMessage類型,因此在您的情況下我們必須檢查轉換或檢查您的對象是否是消息類型的實例,所以你有兩種方法,希望這能澄清你的問題。

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class ExampleListener implements MessageListener {

    public void onMessage(Message message) {
        if (message instanceof TextMessage) {
            try {
                System.out.println(((TextMessage) message).getText());
            }
            catch (JMSException ex) {
                throw new RuntimeException(ex);
            }
        }
        else {
            throw new IllegalArgumentException("Message must be of type TextMessage");
        }
    }
}

AFAIK,就是這樣。 但是,在單個目標(隊列或主題)中混合不同的消息類型和消息內的不同對象類型是非常罕見的。 因此,如果您知道只需要包含SomeType對象的ObjectMessages,則可以跳過檢查實例。

是的,您可能想查看一些例外情況。 然而,對於spring(以及諸如apache camel之類的Frameworks),您可以輕松地連接一個簡單處理某些類對象的bean。 這可能是也可能不值得開銷,並增加了配置的復雜性以簡化代碼。

查看本文的幾頁以獲取描述: http//www.wmrichards.com/mdp.pdf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM