private void StartBackgroundReplier(QueueChannel channel) { new ThreadPerTaskExecutor().Execute(() => { Spring.Integration.Core.IMessage request = channel.Receive(TimeSpan.FromMilliseconds(5000)); Spring.Integration.Core.IMessage reply = new StringMessage(((string)request.Payload).ToUpper()); ((IMessageChannel)request.Headers.ReplyChannel).Send(reply, TimeSpan. FromMilliseconds (5000)); }); }
public void OnMessage(IMessage nmsMessage, ISession session) { object obj = messageConverter.FromMessage(nmsMessage); Spring.Integration.Core.IMessage requestMessage = obj as Spring.Integration.Core.IMessage; if (requestMessage == null) { requestMessage = MessageBuilder.WithPayload(obj).Build(); } if (!expectReply) { bool sent = channelTemplate.Send(requestMessage); if (!sent) { throw new MessageDeliveryException(requestMessage, "failed to send Message to request channel"); } } else { Spring.Integration.Core.IMessage replyMessage = channelTemplate.SendAndReceive(requestMessage); if (replyMessage != null) { IDestination destination = GetReplyDestination(nmsMessage, session); Apache.NMS.IMessage nmsReply = messageConverter.ToMessage(replyMessage, session); if (nmsReply.NMSCorrelationID != null) { nmsReply.NMSCorrelationID = nmsMessage.NMSMessageId; } Apache.NMS.IMessageProducer producer = session.CreateProducer(destination); try { producer.Send(nmsReply); } finally { producer.Close(); } } } }