【问题标题】:how to get JMS payload and header Message and queue type如何获取 JMS 有效负载和标头消息和队列类型
【发布时间】:2017-11-02 09:55:28
【问题描述】:

这里只获取队列正文内容,但想要获取有效负载的值、JMS 标头值、队列类型等。 如果我将 createNewEmployee(String newData) 更改为 createNewEmployee(Message newData) 它会抛出异常,例如找不到方法 createNewEmployee(java.lang.String)

    <int-jms:message-driven-channel-adapter id="inBound" destination="requestQueue" channel="msgReceiver" />

    <int:service-activator id="msgRouter" input-channel="msgReceiver"   output-channel="msgSender" ref="routeClass" method="createNewEmployee"/>

    public String createNewEmployee(String newData) {}

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.messaging.Message;
import javax.jms.TextMessage;
    public String createEmployee(Message message) {
        String response = null;
        try {
            System.out.println("from  message message :" + message);
            TextMessage textMessage=(TextMessage)message;
            String operation=textMessage.getStringProperty("requestType");
            String newData=textMessage.getText();
            System.out.println("from operation :"+operation);
            System.out.println("from createCmcContact :"+newData);
}

【问题讨论】:

  • 请添加更多代码。您究竟在哪里尝试获取标头值?从给定的问题中不清楚。
  • JmsListener 是如何设置的?
  • 刚刚编辑的标签错误地标记了 Spring 而不是 Spring-intergration
  • 你有正确的import (org.springframework.messaging.Message) 吗?显示您的完整routeClass
  • 查看我的答案,了解可能的原因和解决方案

标签: java queue weblogic spring-integration


【解决方案1】:

听起来你需要这个属性:

/**
 * Specify whether the JMS request Message's body should be extracted prior
 * to converting into a Spring Integration Message. This value is set to
 * <code>true</code> by default. To send the JMS Message itself as a
 * Spring Integration Message payload, set this to <code>false</code>.
 * @param extractRequestPayload true if the request payload should be extracted.
 */
public void setExtractRequestPayload(boolean extractRequestPayload) {

&lt;int-jms:message-driven-channel-adapter&gt;extract-payload XML属性。

但这实际上只是最好的猜测,因为您的createNewEmployee(Message newData) 不想接受Message,那么它是javax.jms.Message 而不是org.springframework.messaging.Message

【讨论】:

猜你喜欢
  • 2013-12-07
  • 1970-01-01
  • 2017-09-09
  • 2013-03-23
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多