- 浏览: 348304 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
孙大圣123:
大神,你分享的castor dtd文件中没有field-han ...
Castor (二) -- 自定义映射 -
ananeye:
建议举些通俗的例子,说明下。光这样讲,不好懂。
ORACLE 索引原理 -
度_java:
1.不在不同的机器上实现集群功能,除非他们的时钟同步精确到秒。 ...
Quartzs -- Quartz.properties 配置 -
2047699523:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
MAVEN3--(三)创建MAVEN项目 -
qgm168:
写的不错,借用啦,哈哈,多谢!
自定义POI EXCEL模板
1.准备工作
1)启动ActiveMQ
2)将%ActiveMQ_HOME%\activemq-all-5.1.0.jar导入对应的JAVA Project
2.对于MQ编程通常使用JMS编程,但是由于纯JAVA Application Project中不存在JNDI容器,所以还是在
创建ConnectionFactory时还是不得不与ActiveMQ API耦合
3.JMS体系结构
JMS有两种消息模式:
1)一对一/点到点 模式
2)预订/发布 模式
JMS编程主要的接口有:
ConnectionFactory
Connection : 一般一个aplication中只有一个,线程安全,可复用。
Session
Queue
Topic
MessageProducer
MessageConsumer
MessageListener
4.实例
1)一对一/点到点
QueueReceiverListener.java
package com.siyuan.jms;
import java.util.Date;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
public class QueueReceiverListener implements MessageListener {
private Connection connection;
private String queueNameSendTo;
/**
* @return the connection
*/
public Connection getConnection() {
return connection;
}
/**
* @param connection the connection to set
*/
public void setConnection(Connection connection) {
this.connection = connection;
}
/**
* @return the queueNameSendTo
*/
public String getQueueNameSendTo() {
return queueNameSendTo;
}
/**
* @param queueNameSendTo the queueNameSendTo to set
*/
public void setQueueNameSendTo(String queueNameSendTo) {
this.queueNameSendTo = queueNameSendTo;
}
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
System.out.println("Current time : " + new Date());
System.out.println("Receive : " + ((TextMessage) message).getText());
System.out.println("Receive JMSCorrelationID : " + message.getJMSCorrelationID());
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queueSendTo = session.createQueue(queueNameSendTo);
MessageProducer sender = session.createProducer(queueSendTo);
TextMessage messageToSend = session.createTextMessage();
messageToSend.setText("Nice to meet u, too.");
messageToSend.setJMSCorrelationID(message.getJMSCorrelationID());
sender.send(messageToSend);
System.out.println("Send : " + messageToSend.getText());
System.out.println("Send JMSCorrelationID : " + messageToSend.getJMSCorrelationID());
System.out.println("--------------------------------------------");
sender.close();
session.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
====================================================================
JMSQueueTest.java
package com.siyuan.jms;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSQueueTest {
public static String QUEUE_RECEIVE_FROM_NAME = "MY.TEST.SENDER";
public static String QUEUE_SEND_TO_NAME = "MY.TEST.RECEIVER";
/**
* @param args
* @throws JMSException
*/
public static void main(String[] args) throws JMSException {
ConnectionFactory connFactory
= new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue(QUEUE_RECEIVE_FROM_NAME);
MessageConsumer messageProcessor = session.createConsumer(queue);
QueueReceiverListener processor = new QueueReceiverListener();
processor.setConnection(connection);
processor.setQueueNameSendTo(QUEUE_SEND_TO_NAME);
messageProcessor.setMessageListener(processor);
}
}
说明:本例为模拟一消息接收处理器,即从一Queue中获取Req消息,处理后将
Resp消息发送至另一Queue中,其中Req和Resp通过JMSCorrelationID
进行关联。相关的Req消息发送器将在ActiveMQ和Tomcat集成中在JSP中实现。
编程中需注意:(1) connection.start();
(2) 异步方式获取消息,不能connection.close();
2)预订/发布
JMSTopicTest.java
package com.siyuan.jms;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSTopicTest {
/**
* @param args
* @throws JMSException
*/
public static void main(String[] args) throws JMSException {
// TODO Auto-generated method stub
ConnectionFactory connFactory
= new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("MY.TEST.TOPIC");
MessageConsumer subscriber = session.createConsumer(topic);
MessageProducer publisher = session.createProducer(topic);
publisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
TextMessage messageToPublish = session.createTextMessage();
messageToPublish.setText("Hello all!");
publisher.send(messageToPublish);
Message messageFromSubscribe = subscriber.receive(3000);
System.out.println(messageFromSubscribe);
if (messageFromSubscribe instanceof TextMessage) {
System.out.println(((TextMessage) messageFromSubscribe).getText());
}
publisher.close();
subscriber.close();
session.close();
connection.close();
}
}
编程中需注意:(1) subscriber定义必须在publisher定义之前
只能预订后才能收到发布的消息
5.参考资料:
http://orange5458.iteye.com/admin/blogs/991311
JMS学习文档 PDF格式
发表评论
-
自定义POI EXCEL模板
2013-07-01 17:51 23191.背景 项目中需要将相关数据导出为EXCEL文件,该文 ... -
POI操作EXCEL
2013-07-01 15:55 9801.简介 Apache POI是Apache软件基金会的开 ... -
JSON-LIB
2013-06-30 15:44 16371.关于JSON JSON(JavaScript Obj ... -
Jasperreport应用小结
2013-06-19 23:15 14281.简介 JasperReport是一 ... -
JAVA实现FTP
2013-06-09 09:05 151061.关于FTP FTP:File Transfe ... -
Digester解析的顺序
2013-03-11 18:07 15091.说明 本文将通过一段代码来说明Digester解析X ... -
ONGL介绍
2012-10-16 17:02 58941.简介 OGNL:Object Graph Navi ... -
MyBatis(一)----基础使用
2012-06-10 22:24 9281.简介 --MyBatis是支持普通SQL查询,存储 ... -
SMOOKS--XSL
2012-06-07 13:33 30931.简介 Smooks是一个用于出力XML和非XML数 ... -
Log4j
2012-05-25 15:28 10811。简介 Log4j是一个应 ... -
commons-logging
2012-05-23 22:25 1059一。简介 commons-logging是Apache下的一 ... -
JFreeChart -- Web应用
2012-01-06 00:26 10211) Model index.jsp < ... -
JUnit -- 分析
2011-12-11 18:08 9961.类结构图 Assert : 大量的ass ... -
Quartzs -- JDBC-JobStore - Oracle 实现 + Cluster
2011-09-13 16:44 4489数据库 从%QUARTZ_HOME%/docs/dbTa ... -
Quartzs -- Quartz.properties 配置
2011-09-13 11:23 46269文件加载位置 默认:优先顺序 Classpath: ... -
StringTemplate学习笔记(四) StringTemplateGroup文件
2011-08-27 10:31 3506一,简介 StringTemplateGroup ... -
StringTemplate学习笔记(三) st文件加载
2011-08-22 22:40 4372一,简介 ST通过StringTemplateGr ... -
StringTemplate学习笔记(二) 语法
2011-08-21 16:11 10951一,分隔符,注释 <...>貌似只能在Stri ... -
StringTemplate学习笔记(一) 简介
2011-08-21 09:47 2607一,简介 StringTemplate(简称ST ... -
Castor (二) -- 自定义映射
2011-08-03 23:33 39131.概述 Castor的自定义映射关系通过XML设置。 ...
相关推荐
active mq 实战教程,写的很不错,拿来分享
包含两个示例中,第一个示例须要运行单独MQ(Apache Active MQ 5.15.0以下的版本)。第二个示例不需要运行单独的MQ。 有兴趣的朋友可以看看。两个示例运用的不同的方法去实现的。
Active MQ 与 WebSphere MQ 高可用性和管理分析。
Active MQ in Action,英文版。主要是ActiveMQ,manning
active MQ maven POM方式 初学者
active_mq_mvc 源码,由一段if...else..判断引起的代码重构...,主要讲设计思想,以及设计模式,合理的运用反射,极度的省略了代码
Jfinal -active mq: 消费:extends JFinalQueueConsumer 生产:JFinalQueue.sendMessage(queueName, message);
Active MQ C++实现通讯 X86 librariy:CMS (stands for C++ Messaging Service)类似于JMS API用于同Message Brokers通讯(例如Active MQ)。 APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如...
集成了所有active MQ资源,应用于windows和linux即时通信
active mq的学习手册,例子等。你可以一步步地上手。
Active MQ 基础知识思维导图。主要是JMS总结介绍。用于学习和复习
利用activeMq实现的消息数据转发服务器端实现
Camel IBM Websphere MQ 到 Active MQ 桥接路由 先决条件 IBM 为安装在 Fuse 上的 MQ 客户端提供了 OSGi jar 文件IBM_MQ_INSTALL_DIR/java/lib/OSGi 运行 AMQ 代理 带有填充属性的 JBOSS_FUSE_INSTALL_DIR/etc/ 中...
NULL 博文链接:https://xpenxpen.iteye.com/blog/1287844
开发active-mq的良好帮助指导手册
ActiveMQ is the most popular and powerful open source Message Bus.ActiveMQ 是一个完全支持JMS1.1 和J2EE 1.4 规范的JMS Provider 实现,尽管JMS 规范出台 已经是很久的事情了,但是JMS 在当今的J2EE 应用中间仍然...
activeMQ的一个小例子 包含处理附件的代码例子 完整版 包含jar包和配置文件
ActiveMQ Manning.Active.MQ.in.Action.(MEAP) Active.MQ Active.MQ Manning.Active.MQ.in.Action.(MEAP) Active.MQ Active.MQ
基于C#开发的activeMQ中间件通信技术的实现
NULL 博文链接:https://manzuosteve.iteye.com/blog/1859288