Мы используем пружинную интеграцию для взаимодействия компонентов, используя MQSeries и RabbitMQ.
В MQseries существует множество свойств JMS, которые используются клиентами.
Мы хотели бы добавить промежуточную функцию между входом и выходом, которая отображает эти свойства (получая jms_priority из mqseries и помещая в выходное сообщение свойство «priority» для RabbitMQ).
Без особых свойств JMS работает очень хорошо .
Ниже кода, который мы используем:
<int:channel id="input" ></int:channel>
<int-jms:message-driven-channel-adapter id="jmsIn" connection-factory="connectionFactoryCaching" channel="input" ...>
<int:service-activator id="sa1" input-channel="input" ref="serviceBean" output-channel="output"/>
<bean id="serviceBean" class="com.poc.ServiceActivator"> </bean>
<int:channel id="output" ></int:channel>
<int-amqp:outbound-channel-adapter channel="output" .../>
import org.springframework.amqp.core.MessageProperties;
Код ServiceActivator:
public class ServiceActivator {
public org.springframework.amqp.core.Message convertMessageMQSeriesToRabbit (Message obj){
MessageProperties messageProperties = new MessageProperties();
try {
messageProperties.setCorrelationId(obj.getJMSCorrelationID());
System.out.println("getJMSReplyTo "+obj.getJMSReplyTo());
System.out.println("getJMSPriority "+obj.getJMSPriority());
messageProperties.setPriority(obj.getJMSPriority());
System.out.println("getJMSType "+obj.getJMSType());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Это правильный способ сделать это? В методе convertMessageMQSeriesToRabbit какой тип возвращаемого объекта должен быть передан исходящему? org.springframework.amqp.core.Message?
В этом методе мы хотим заполнить все свойства RabbitMQmessage (content_type, content_encoding, приоритет, correlation_id, reply_to, срок действия, message_id, timestamp, type, user_id, app_id, cluster_id) соответствующим значением JMS.
Нам также нужно сделать это другим способом (inboud rabbitMQ => outq mqseries)