Мы используем Spring Integration для использования сообщений из очереди, и требование заключается в отправке сообщения в очередь ошибок, если есть какая-либо проблема при обработке потребляемого сообщения. Поток работает нормально, но одна проблема, которую мы видим, - это когда есть какое-либо исключение, вызванное обработкой сообщения, сообщение перенаправляется в очередь ошибок, которую мы сконфигурировали, но добавляется всей трассировкой стека исключения. Мы ищем только исходное сообщение для доставки в очередь. Ниже конфигурация мы сделали,Spring Integration JMS Issue
<bean id="errorQ" class="com.ibm.mq.jms.MQQueue">
<constructor-arg value="${error.queue}" />
</bean>
<bean id="inQ" class="com.ibm.mq.jms.MQQueue">
<constructor-arg value="${inbound.queue}" />
</bean>
<int:channel id="error" />
<int:channel id="inbound" />
<int-jms:message-driven-channel-adapter
id="jmsIn" channel="inbound" container="messageListenerContainer"
acknowledge="transacted"></int-jms:message-driven-channel-adapter>
<int-jms:outbound-channel-adapter id="jmsError"
channel="error" connection-factory="mqConnectionFactory"
destination="errorQ" delivery-persistent="true"></int-jms:outbound-channel-adapter>
<int:service-activator id="service"
input-channel="inbound" ref="messageListener" method="someMethodInListerner">
<int:request-handler-advice-chain>
<ref bean="retryWithBackoffAdviceSession" />
</int:request-handler-advice-chain>
<bean id="retryWithBackoffAdviceSession"
class="org.springframework.integration.handler.advice.RequestHandlerRetryAdvice">
<property name="retryTemplate">
<bean class="org.springframework.retry.support.RetryTemplate">
<property name="backOffPolicy">
<bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy">
<property name="initialInterval" value="${initialInterval}" />
<property name="multiplier" value="${multiplier}" />
<property name="maxInterval" value="${maxInterval}" />
</bean>
</property>
<property name="retryPolicy">
<bean class="org.springframework.retry.policy.SimpleRetryPolicy">
<property name="maxAttempts" value="${redelivery}" />
</bean>
</property>
</bean>
</property>
<property name="recoveryCallback">
<bean
class="org.springframework.integration.handler.advice.ErrorMessageSendingRecoverer">
<constructor-arg ref="error" />
</bean>
</property>
</bean>
Привет, Гэри, добавлен код входного канала, а теперь уже выше, поэтому он обрабатывается потоком. Я понимаю ваш комментарий о добавлении трансформатора для отправки только исходной полезной нагрузки в очередь ошибок, но где мне нужно поместить это в поток? – Ashish
Я думаю, что добавление трансформатора, передающего полезную нагрузку, должно работать? –
Ashish
трансформатор с 'выражение =«полезной нагрузки»' не делает ничего - видеть мое редактирование , –