我同意
Spring JMS很简单的另一个响应(让你知道一点Spring,并拥有框架)但是它也很简单.只需在main中编写一些代码来设置ConnectionFactory,Connection和Session,例如看到
您可以从JNDI查找ConnectionFactory,也可以自己实例化特定于提供者的ConnectionFactory;例如对于WebSphere MQ,您可以编写如下内容:
MQConnectionFactory cf = new MQConnectionFactory();
cf.setHostName(HOSTNAME);
cf.setPort(PORT);
cf.setChannel(CHANNEL);
cf.setTransportType(WMQConstants.WMQ_CM_CLIENT);
(其他提供商可用,我只是不能编写我的头顶上的代码:)然后标准JMS
Connection c = cf.createConnection();
Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue q = s.createQueue("myQueue");
MessageConsumer c = s.createConsumer(q);
此时你有两个选择.您可以创建一个javax.jms.MessageListener实现并在MessageConsumer上设置它,或者如果您想要更直接的控制,您可以启动一个使用MessageConsumer进行get-with-wait的线程(receive(int timeout) )或没有等待获得(receiveNoWait())然后睡觉直到下一次接收.不要使用receive(),但这对JMS来说绝不是一个好主意.如果您需要多个轮询线程,则应检查JMS会话/使用者对象的并发限制.
如果您想要发生任何事情,请不要忘记在完成设置后调用Connection.start()
优点是你只需要你的JMS提供者.jars在类路径上,没有框架等.缺点是它比Spring更复杂,它提供了相当优雅的解决方案 – 注意这里有多少设置代码,相比Spring提取的摘要一切都好.真的取决于你的喜好,其他要求等.