namespace Test { using NMS; using System; public class Bridge { private IConnectionFactory srcFactory; private IConnectionFactory dstFactory; private IConnection srcConn; private IConnection dstConn; private IMessageProducer producer; private ISession dstSession ; private MessageMapper mapper; public Bridge(IConnectionFactory srcFactory, IConnectionFactory dstFactory, MessageMapper mapper) { this.srcFactory = srcFactory; this.dstFactory = dstFactory; this.mapper = mapper; } public void Connect() { srcConn = srcFactory.CreateConnection(); dstConn = dstFactory.CreateConnection(); } public void Close() { srcConn.Close(); dstConn.Close(); } public void Start(string srcQueueName, string dstQueueName) { ISession srcSession = srcConn.CreateSession(); dstSession = dstConn.CreateSession(); IQueue srcQueue = srcSession.GetQueue(srcQueueName); IQueue dstQueue = dstSession.GetQueue(dstQueueName); IMessageConsumer consumer = srcSession.CreateConsumer(srcQueue); producer = dstSession.CreateProducer(dstQueue); consumer.Listener += new MessageListener(OnMessage); } private void OnMessage(IMessage msg) { System.Console.WriteLine("Bridge processing one message"); try { producer.Send(mapper.map(msg, dstSession)); } catch (Exception e) { System.Console.WriteLine(e.ToString()); } System.Console.WriteLine("Bridge processing complete"); } } } // vim:sw=4:sts=4