如何获取 JMS 负载和 header 消息以及 queue 类型
how to get JMS payload and header Message and queue type
这里只获取QueueBody内容,但想获取有效负载的值,JMS Header值,queue类型等..
如果我将 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);
}
听起来你需要这个 属性:
/**
* 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) {
它是 extract-payload
XML <int-jms:message-driven-channel-adapter>
的属性。
但这实际上只是最好的猜测,因为您的 createNewEmployee(Message newData)
不想接受 Message
,那么它是 javax.jms.Message
而不是 org.springframework.messaging.Message
。
这里只获取QueueBody内容,但想获取有效负载的值,JMS Header值,queue类型等.. 如果我将 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);
}
听起来你需要这个 属性:
/**
* 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) {
它是 extract-payload
XML <int-jms:message-driven-channel-adapter>
的属性。
但这实际上只是最好的猜测,因为您的 createNewEmployee(Message newData)
不想接受 Message
,那么它是 javax.jms.Message
而不是 org.springframework.messaging.Message
。