问题描述
我正在使用空格模式将请求发送到第三方IBM MQ,例如下面的文本(COBOL输入文件),但是我正在像下面的“回复”队列中一样作为错误响应,但是相同的输入可以正常运行spring jms,我面对着骆驼的问题
示例输入:
GetProducerWithCommissionddrates
C26115
77104 99998
2010-01-01 011
回复:
在控制器中打印数据:: EPPRD02007EAn无效的COBOL日期格式 作为输入提供给生产者检索服务“获取生产者” 带有佣金率操作:AsOfDate。资源: (ProducerMediationModule)
ProducerMediationModule
带有骆驼的控制器:
@PostMapping("/request-reply")
public String requestReplyMapping(@RequestBody String inputReq) {
Exchange exchangeRequest = ExchangeBuilder.anExchange(camelContext).withBody(inputReq).build();
Exchange exchangeResponse = producer.send("direct:request-reply",exchangeRequest);
return exchangeResponse.getIn().getBody(String.class);
}
骆驼路线:
@Component
public class RequestReplyRouter extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:request-reply").
to("jms:REQUEST.Q1?ReplyTo=REPLY.Q1&exchangePattern=InOut")
.log("Request-reply Body is ${body} and header info is ${headers} ");
from("jms:REPLY.Q1")
.log("Received Body is ${body} and header info is ${headers} ");
}
}
JMS控制器代码(有效):
@PostMapping(value="request-reply")
public ResponseEntity<String> sendRequestAndReceiveReply (@RequestBody String prd2x4Request) { System.out.println("received prd2x4 request: "+prd2x4Request);
String reply = prd2x4Wrapper.sendReqAndGetMessageId(prd2x4Request);
return new ResponseEntity<String>(reply,HttpStatus.OK);
}
JMS MQ调用(正在工作):
private String sendReqAndGetMessage(String prd2x4Request) {
String messageId = "";
MQQueue requestQueue = new MQQueue(RequestQueue);
Session session = jmstemplate.getConnectionFactory().createConnection().createSession(); MessageProducer mp = session.createProducer(requestQueue);
TextMessage message = session.createTextMessage(prd2x4Request);
message.setStringProperty("JMS_IBM_Character_Set","IBM037");
mp.send(message);
messageId = message.getJMSMessageID();
mp.close();
session.close();
return messageId;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)