[原创]Message Driven Bean 学习
发送端:
@Stateless
@Local
public class QueueSend implementsIQueueSend
{
@Resource(mappedName ="jms/ConnectionFactory")
privateConnectionFactory connectionFactory;
@Resource(mappedName = "jms/RequestQueue")
privateQueue requestQueue;
public voidsendNotificationForInline(ReportInstance ri){
Connection connection = null;
try {
connection =connectionFactory.createConnection();
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination dest = (Destination)requestQueue;
MessageProducer messageProducer =session.createProducer(dest);
MapMessage message =session.createMapMessage();
message.setLong("reportInstId",ri.getId());
messageProducer.send(message);
} catch (Exception ex) {
} finally {
if (connection != null) {
try {
connection.close();
} catch (Throwable t) {
}
}
}
}
}
接收端:
@MessageDriven(mappedName ="jms/RequestQueue")
public class NotificationProcesser implements MessageListener{
public void onMessage(Message message) {
if(message instanceof MapMessage)
{
//处理message
}
}
}
Queue:点对点的消息队列,1个消息产生1个对应 1:1
Topic:采取发布/订阅机制的消息主题,1个消息产生多个对应 1:N
@Stateless
@Local
public class QueueSend implementsIQueueSend
{
@Resource(mappedName ="jms/ConnectionFactory")
privateConnectionFactory connectionFactory;
@Resource(mappedName = "jms/RequestQueue")
privateQueue requestQueue;
public voidsendNotificationForInline(ReportInstance ri){
Connection connection = null;
try {
connection =connectionFactory.createConnection();
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination dest = (Destination)requestQueue;
MessageProducer messageProducer =session.createProducer(dest);
MapMessage message =session.createMapMessage();
message.setLong("reportInstId",ri.getId());
messageProducer.send(message);
} catch (Exception ex) {
} finally {
if (connection != null) {
try {
connection.close();
} catch (Throwable t) {
}
}
}
}
}
接收端:
@MessageDriven(mappedName ="jms/RequestQueue")
public class NotificationProcesser implements MessageListener{
public void onMessage(Message message) {
if(message instanceof MapMessage)
{
//处理message
}
}
}
Queue:点对点的消息队列,1个消息产生1个对应 1:1
Topic:采取发布/订阅机制的消息主题,1个消息产生多个对应 1:N