Сообщение Mule JMS урезано - IBM MQ
У меня проблема с тем, что мое сообщение jms не полностью отправлено в очередь и усечено, в очередь установлено только 100 символов. Вот мои конфигурации:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:util="http://www.springframework.org/schema/util"
xmlns:spring="http://www.springframework.org/schema/beans" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:jms="http://www.mulesoft.org/schema/mule/jms" xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:task="http://www.springframework.org/schema/task"
xmlns:script="http://www.mulesoft.org/schema/mule/scripting"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.4/mule.xsd
hhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/3.4/mule-http.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/3.4/mule-jms.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/3.4/mule-vm.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/3.3/mule-scripting.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd">
<spring:bean id="MQConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<spring:property name="transportType" value="1" />
<spring:property name="hostName" value="222.222.100.58"/>
<spring:property name="port" value="1414"/>
<spring:property name="queueManager" value="ESBDEVBKRQM"/>
</spring:bean>
<jms:connector name="WebsphereMQConnector"
connectionFactory-ref="MQConnectionFactory"
username="Administrator" password="*****"
numberOfConsumers="200" />
<flow name="test-webSphere-flow">
<http:inbound-endpoint address="http://localhost:8081/test/in/websphere3" method="POST"/>
<object-to-string-transformer />
<jms:outbound-endpoint queue="ACCT_Q_REQ" connector-ref="WebsphereMQConnector"/>
</flow>
</mule>
Чтобы убедиться, что проблема не со стороны wepshpere mq, я использовал java-код с ibm API для отправки сообщения, и оно было полностью отправлено
package jms;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import com.ibm.mq.jms.MQQueueConnectionFactory;
public class TestJMS {
void send() {
String destinationName = "ACCT_Q_REQ";
MessageProducer producer = null;
Connection connection = null;
Session session = null;
try {
MQQueueConnectionFactory MQQueueConnectionFactory = new MQQueueConnectionFactory();
MQQueueConnectionFactory.setTransportType(1);
MQQueueConnectionFactory.setHostName("222.222.100.58");
MQQueueConnectionFactory.setPort(1414);
MQQueueConnectionFactory.setQueueManager("ESBDEVBKRQM");
connection = MQQueueConnectionFactory.createConnection("Administrator", "******");
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue source = session.createQueue(destinationName);
producer = session.createProducer(source);
connection.start();
String text = ".....";
TextMessage objectMessage = session.createTextMessage();
objectMessage.setText(text);
producer.send(objectMessage);
} catch (JMSException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestJMS().send();
}
}
В чем может быть проблема здесь?
1 ответ
Вы должны проверить все соответствующие ограничения максимального размера сообщения MQ:
- MaxMsgLength MQ-соединения - это часть вашей MQQueueConnectionFactory
- максимальная длина сообщения администраторов очередей, MAXMSGL
- MQIA_MAX_MSG_LENGTH очереди
- и если вы получаете сообщения по каналу MQ, даже канал MAXMSGL
все вышеперечисленное должно быть установлено на значение выше 1000, чтобы все работало...