- 浏览: 7349518 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在半年多的时间里,天天闲着,没有写blog也没有学习,现在要学习一些工作要使用的东西咯,公司使用的TongGTP和TongLinkQ最近一直不稳定,老大准备开发一个文件传输中间件,需要借鉴一些开源的mq框架学习和架构。
因为ActiveMQ是一个Apache的一个组件,比较活跃,并且有以下优点:
目前优点:
1.支持jms1.1和jms1.2等jms API。
2.容易跟当前的Spring框架整合。
3.容易JMX等整合,便于管理。
4.提供了高可靠性,可以采用主从服务的方式,Master broker只有在消息成功被复制到slave broker之后才会响应客户,保证消息的完整性。
5.高容错性提供了failover机制。
6.支持多语言种类,java,c#等。
7.支持消息的持久化为文件或者数据库信息。
8安全可靠,可以和jaas整合。
9.在消息发送方面效率高于jbossmq.
如下为一个简单的发送消息的方法:
需要的jar为:
<classpathentry kind="lib" path="src/activemq-all-5.5.0.jar"/>
<classpathentry kind="lib" path="src/slf4j-api-1.5.2-sources.jar"/>
<classpathentry kind="lib" path="src/slf4j-api-1.5.2.jar"/>
<classpathentry kind="lib" path="src/slf4j-simple-1.5.2.jar"/>
<classpathentry kind="lib" path="src/log4j-1.2.8.jar"/>
<classpathentry kind="lib" path="src/commons-dbcp-1.4.jar"/>
<classpathentry kind="lib" path="src/commons-pool-1.5.4.jar"/>
<classpathentry kind="lib" path="src/commons-collections-3.2.1.jar"/>
1.首先使用activemq.bat启动ActiveMQ的broker进程,监听默认的61616端口可以使用如下命令查看端口:
netstat -a
检查显示信息有无61616端口信息。
2.开发消息生产者代码如下:
package easyway.app.activemq.demo2; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.StreamMessage; import org.apache.activemq.ActiveMQConnectionFactory; /** * 消息的创建者 * @author longgangbai * */ public class StreamMsgProducer { public void send(File file) { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(); Connection conn = null; try { conn = factory.createConnection(); conn.start(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination queue = session.createQueue("streamMsg"); MessageProducer producer = session.createProducer(queue); InputStream in = new FileInputStream(file); byte[] buffer = new byte[2048]; int c = -1; while ((c = in.read(buffer)) > 0) { StreamMessage smsg = session.createStreamMessage(); smsg.writeBytes(buffer, 0, c); producer.send(smsg); System.out.println("send: " + c); } in.close(); } catch (JMSException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (JMSException e) { e.printStackTrace(); } } } } public static void main(String[] args) { File file = new File("c:\\send.txt"); new StreamMsgProducer().send(file); } }
3.开发消息消费者
package easyway.app.activemq.demo2; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.StreamMessage; import org.apache.activemq.ActiveMQConnectionFactory; /** * 消息的消费者 * @author longgangbai * */ public class StreamMsgConsumer { public void receive() { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(); Connection conn = null; try { conn = factory.createConnection(); conn.start(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination queue = session.createQueue("streamMsg"); MessageConsumer consumer = session.createConsumer(queue); OutputStream out = new FileOutputStream("c:\\receive.txt"); byte[] buffer = new byte[2048]; while (true) { Message msg = consumer.receive(5000); if (msg == null) { break; } if (msg instanceof StreamMessage) { StreamMessage smsg = (StreamMessage) msg; int c = smsg.readBytes(buffer); out.write(buffer, 0, c); System.out.println("Receive: " + c); } } out.close(); } catch (JMSException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (JMSException e) { e.printStackTrace(); } } } } public static void main(String[] args) { new StreamMsgConsumer().receive(); } }
4.分别启动消息消费者和生产者即可。
发表评论
-
ActiveMQ的拦截器插件
2011-07-22 09:29 6619ActiveMQ拦截器使用和原 ... -
ActiveMQ的各种表SQL的管理
2011-07-20 20:58 3525在ActiveMQ为了方便的切换数据库,更为了深入 ... -
ActiveMQ中advisory的使用和原理
2011-07-20 18:46 2910在ActiveMQ中的监控和管理也可以通过Advisory实现 ... -
ActiveMQ的异步转发(DispatchAsync)功能
2011-07-20 11:29 47071. 消息者异步转发功能 针对正常情况下,在一个 ... -
ActiveMQ 的独占消费(Exclusive Consumer)
2011-07-20 11:26 4108我们经常希望维持队列中的消息,按一定次序转发给消息者。然而当有 ... -
ActiveMQ5.5在Tomcat6.0中部署
2011-07-19 22:27 2930在ActiveMQ中监控管理Web组件为ActiveMQCon ... -
Window 下ActiveMQ端口冲突,负载均衡,主备配置
2011-07-17 16:03 5540在Java 学习中Window操作系 ... -
ActiveMQ中消息权限策略
2011-07-17 00:31 2680在ActiveMQ发送消息的时候,可以通过MessageAut ... -
ActiveMQ和Jetty整合使用
2011-07-07 22:49 5601在ActiveMQ中的activemq.b ... -
ActiveMQ 和Commons-Daemon整合
2011-07-07 20:13 2955在一般的java项目中,如果在linu ... -
关于ActiveMQ中怎么实现一对多发送消息讨论
2011-07-07 19:50 6080无 ... -
ActiveMQ 中ActiveMQBlobMessage的接收和发送
2011-07-05 10:47 5136在ActiveMQ中对比较大的消息采用一 ... -
ActiveMQ 和JAXWS整合
2011-07-04 22:02 2219在多个系统中可能考虑到远程访问等的,采用WebServ ... -
ActiveMQ-Camel的使用
2011-07-02 10:27 10232在一个电子系统中可能接受来自不同供应商的 ... -
ActiveMQ模板和Velocity整合使用
2011-07-01 19:50 2317ActiveMQ模板使用 在ActiveMQ中AMQ ... -
ActiveMQ中消息游标
2011-06-30 18:16 2662在 ActiveMQ 5.0的之前版本中,b ... -
ActiveMQ和Tomcat的整合应用
2011-06-30 17:00 11220在ActiveMQ的资源让容器Tomcat管理时 ... -
ActiveMQ关于文件传输需要注意哪些方面?
2011-06-18 22:11 6195最近一直在关注一些文件传输中间件的实现,想用Acti ... -
关于ActiveMQ中Session和Connection资源的管理
2011-06-15 23:43 25114配置完了持久化之后,我们就可以使用代码来发送 ... -
ActiveMQ中关于文件锁的机制的学习
2011-06-14 23:31 3346在ActiveMQ中提供了文件数据库机 ...
相关推荐
在这个简单的例子中,我们将探讨如何利用Ajax与ActiveMQ交互,发送和接收消息。首先,你需要在服务器端设置一个ActiveMQ实例,可以通过下载并安装ActiveMQ来完成。安装完成后,启动ActiveMQ服务,这通常会开启一个...
6. 发送消息业务类:在业务层,调用上述接口发送消息。这通常发生在某些业务操作完成后,需要通知其他系统或组件的时候。 7. 测试与调试:编写测试用例,确保消息能正确发送和接收,同时监控ActiveMQ服务器以查看...
这个简单的ActiveMQ例子可能是为了演示如何设置和使用基本的生产者和消费者,以及如何通过消息队列实现异步通信。在实际应用中,我们还可以利用ActiveMQ的高级特性,如持久化、优先级、消息筛选等,以满足更复杂的...
在Apache ActiveMQ中,消息生产者(Producer)发送消息到队列,而消息消费者(Consumer)从队列中取出并处理这些消息。ActiveMQ支持多种协议,包括OpenWire、STOMP、AMQP、MQTT和WS,这使得它能与各种编程语言和平台...
发送消息的基本步骤包括: 1. **初始化连接**:创建一个`ConnectionFactory`实例,然后通过它建立到ActiveMQ服务器的连接。这通常涉及到设置URL、用户名和密码等参数。 2. **创建会话**:连接建立后,需要创建一个...
2. **配置JmsTemplate**:接下来,我们需要创建一个`JmsTemplate`实例,它是发送和接收消息的主要工具。配置如下: ```java @Bean public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) { ...
**Spring 整合 ActiveMQ 简单实例** 在当今的分布式系统中,消息队列(Message Queue)作为异步处理、解耦组件的关键技术,被广泛应用。Spring 框架与 ActiveMQ 的整合,使得开发者能够轻松地在 Spring 应用程序中...
通过这个简单的 ActiveMQ 示例,你可以了解如何利用 JMS 接口在 Java 应用程序中使用 ActiveMQ 进行消息通信。这个例子将帮助你快速上手,并理解消息队列在分布式系统中的作用和价值。记住,深入学习 ActiveMQ 的...
- 实现生产者代码,创建一个连接工厂,连接到ActiveMQ服务器,并创建一个Producer发送消息: ```java import org.apache.activemq.ActiveMQConnectionFactory; // 创建连接工厂 ActiveMQConnectionFactory ...
总结,基于Maven的ActiveMQ简单实例展示了如何利用Maven管理依赖,以及如何使用Java API与ActiveMQ交互进行消息发送和接收。这个实例可以帮助初学者快速理解和入门ActiveMQ的基本用法,为进一步探索分布式系统中的...
本教程将通过一个简单的例子介绍ActiveMQ的两个核心模式:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。我们将使用IntelliJ IDEA作为集成开发环境来实现这些示例。 首先,我们需要...
4. **编写发送消息的代码**:在Java类中注入`JmsTemplate`,然后使用它的`send()`方法发送消息。例如,你可以创建一个名为`SendJms`的类: ```java @Service public class SendJms { @Autowired private ...
在“简单的activemq点对点的同步消息模型”中,我们将探讨如何构建一个基本的、基于ActiveMQ的点对点消息传递系统,以及它的工作原理。 1. **点对点模型**:在JMS中,点对点模型(P2P)是一种消息传递模式,其中...
在这个"activeMQ的java简单实例.zip"压缩包中,我们可能找到了一个简单的Java项目,用于演示如何在Java应用中集成和使用ActiveMQ。以下是一些关于ActiveMQ和Java集成的关键知识点: 1. **ActiveMQ安装与配置**:...
在“activeMQ简单例子”中,我们将探讨如何在Apache ActiveMQ 5.11.1版本下配置和运行一个简单的消息发送与接收应用。 首先,你需要下载并解压`apache-activemq-5.11.1-bin.zip`。这个压缩包包含了运行ActiveMQ所需...
4. **编写消息生产者**:在Spring MVC的控制器或服务层,创建一个方法来发送消息到ActiveMQ。可以使用`JmsTemplate`或者`DefaultMessageListenerContainer`来实现。 5. **编写消息消费者**:创建一个实现`Message...
在服务器端,你可以使用Java API或者ActiveMQ管理控制台来发送消息。例如,使用Java API创建一个`Producer`对象,然后调用`send`方法将消息发送到已订阅的主题或队列: ```java ConnectionFactory ...
通过activemq-demo-sub、activemq-demo和activemq-demo-pub这三个示例,我们可以了解到ActiveMQ的基本操作流程,包括生产者如何发送消息,消费者如何接收消息,以及如何进行消息的订阅。这只是一个简单的入门起点,...