- 浏览: 1782028 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (723)
- IE 国际化 (1)
- java (310)
- python (52)
- Spring (101)
- eclipse (43)
- birt (10)
- exe4j (1)
- ActiveMQ (3)
- HornetQ (7)
- Ext (16)
- Linux (50)
- james (1)
- mail (3)
- 经验 (288)
- tomcat (5)
- Netty (3)
- ant (6)
- rsync (2)
- MD5 (3)
- 正则表达式 (3)
- 非技术 (59)
- mysql (28)
- sftp (1)
- Commons (2)
- oracle (3)
- vsftp (1)
- jdoc (1)
- socket (3)
- SEDA (2)
- UUID (1)
- quartz (7)
- javascript (50)
- sql (5)
- array (3)
- POI (3)
- redis (2)
- junit (4)
- 二维码 (1)
- jdk (8)
- h2 (6)
- maven (37)
- JVM (5)
- html (4)
- css (1)
- excel (4)
- myeclipse (2)
- scala (0)
- jQuery (5)
- log (10)
- slf4j (2)
- log4j (9)
- REST (15)
- guava (18)
- Joda-Time (7)
- ini4j (1)
- 配置文件 (2)
- lucene (1)
- database (3)
- curator (2)
- zookeeper (3)
- 并发 (2)
- jetty (6)
- ehcache (5)
- windows (1)
- protobuf (1)
- select2 (2)
- easyui (10)
- Freemarker (1)
- Filter (1)
- twisted (1)
- DateTime (11)
- mockrunner (1)
- DataSource (4)
- ajax (1)
- shell (18)
- powermockito (5)
- json (5)
- lombok (1)
- jointjs (1)
- cookie (1)
- mybatis (11)
- 加密解密 (2)
- 安全 (2)
- web (1)
- notepad++ (3)
- mac (48)
- sublime (14)
- git (7)
- docker (10)
- jar (1)
- gson (5)
- ubuntu (3)
- 模式 (1)
- neo4j (2)
- elasticsearch (1)
- OmniGranffle (1)
- ASCII (1)
- jdbc (3)
- kafka (1)
- MQ (1)
- chrome (3)
- 华为 (1)
- 路由器 (1)
- api (2)
- 架构 (1)
- 设计模式 (1)
- pip (4)
- springboot (48)
- 数据库 (4)
- thread (1)
- java.thread (1)
- sqlite (1)
- postman (1)
- springboot-actuator (2)
- jwt (1)
- token (1)
- brew (9)
- vim (1)
- virtualbox (1)
- Swagger (1)
- spring-retry (3)
- 调度 (1)
- item2 (5)
- graph (12)
- jgrapht (12)
- tuple (1)
- hadoop (5)
- curl (1)
- 算法 (3)
- Jekyll (1)
- github (1)
- ssh-keygen (1)
- zip (2)
- http (2)
- RestTemplate (8)
- 文件处理 (2)
- XStream (1)
- XML (3)
- JAXB (1)
- 笛卡尔积 (2)
- hive (1)
- 搜狗输入法 (1)
- 常用java类 (2)
- nginx (1)
- log4j2 (1)
- drawio (2)
- 安卓 (1)
- 小米 (1)
- okhttp (1)
- requests (1)
- 格式化 (2)
- MySQL Workbench (1)
- 分布式 (1)
- zip4j (1)
- hbase (5)
- hikari (1)
- javers (1)
- pydatetime (4)
- pyassert (1)
- pylog (2)
- tree (2)
- download (1)
- zeppelin (1)
- utils (2)
- wget (1)
- 鼠标 (1)
- 位运算 (2)
- open api (1)
- 域名 (1)
最新评论
-
youngcoder:
haohaohao~
Spring cache 注解功能不起作用的解决方案 -
kanpiaoxue:
lixz 写道有具体实例demo吗好多年前写的了。你还是去官网 ...
spring batch(一):基础部分 -
lixz:
有具体实例demo吗
spring batch(一):基础部分 -
BuDongOrz:
...
Spring MVC controller 读取配置文件 -
hvang1988:
理解错了,原来还是计数,不是时间
spring batch(二):核心部分(1):配置Spring batch
最近对MQ(Message Queue)很感兴趣,准备用到项目上。因为是做Java开发的,所以我找了JMS的MQ。开始看了ActiveMQ和HornetQ。我选择了HornetQ,因为看了一些性能测试,我觉得这款JBoss的MQ相当出色。发现国内关于HornetQ的资料很少,国外有一部分,但是版本都很久了。
自己写了一个例子,环境如下:
1、HornetQ的版本是 hornetq-2.2.5.Final
2、JDK1.6.0_30-b12
3、HornetQ自带example里面的config/stand-alone/non-clustered的配置文件
4、HornetQ作为独立的服务器,运行在一台Dell1950(2CPU,16G内存)上
5、自己写了两个小例子,很简单,就是一个Producer和Consumer
6、发送Person类的实例(必须实现Serializable接口)
7、注意:Producer和Consumer用到的Person类,必须在各个项目的相同的package下面,具有相同的serialVersionUID
8、在classpath下面有jndi.properties文件,里面放置着寻找服务器上面JNDI Server必须的配置
9、在classpath下面有个log4j的配置文件,用来答应日志
代码如下:
public class Producer { private static Logger logger = Logger.getLogger(Producer.class); /** * @param args */ public static void main(String[] args) { try { runExample(); } catch (Exception e) { e.printStackTrace(); } } private static void runExample() throws NamingException, JMSException { InitialContext ic = new InitialContext(); ConnectionFactory cf = (ConnectionFactory) ic .lookup("/ConnectionFactory"); Queue orderQueue = (Queue) ic.lookup("/queue/ExpiryQueue"); Connection connection = cf.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(orderQueue); connection.start(); int count = 0; try { while (true) { Person one = new Person(count++, "xuepeng_" + count); ObjectMessage msg = session.createObjectMessage(one); producer.send(msg); logger.info(Producer.class.getName() + " start to sent message: " + one); } } finally { session.close(); } } }
public class Person implements Serializable { private static final long serialVersionUID = 2670718766927459001L; private Integer id; private String name; private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); private String time = format.format(new Date()); /** * @param id * @param name */ public Person(Integer id, String name) { super(); this.id = id; this.name = name; } /** * @return the id */ public Integer getId() { return id; } /** * @param id * the id to set */ public void setId(Integer id) { this.id = id; } /** * @return the name */ public String getName() { return name; } /** * @param name * the name to set */ public void setName(String name) { this.name = name; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", time=" + time + "]"; } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 37; int result = 17; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } /* * (non-Javadoc) * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
public class Consumer { private static Logger logger = Logger.getLogger(Consumer.class); /** * @param args */ public static void main(String[] args) { try { runExample(); } catch (Exception e) { e.printStackTrace(); } } private static void runExample() throws NamingException, JMSException { InitialContext ic = new InitialContext(); ConnectionFactory cf = (ConnectionFactory) ic .lookup("/ConnectionFactory"); Queue orderQueue = (Queue) ic.lookup("/queue/ExpiryQueue"); Connection connection = cf.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer(orderQueue); connection.start(); try { while (true) { ObjectMessage messageReceived = (ObjectMessage) consumer.receive(); org.hornetq.jms.example.Person one = (org.hornetq.jms.example.Person)messageReceived.getObject(); logger.info(Consumer.class.getName() + " start to receive message: " + one); } } finally { session.close(); } } }
启动Linux上面的HorneQ服务之后,运行上面的Producer和Consumer均可以实现通讯。
发表评论
-
hornetq cluster机器的配置
2014-03-31 16:29 1930在这篇文章的附件中,我上传了一个 hornetq-2.4.0 ... -
python通过stomp协议和hornetq进行连接(2)
2013-12-26 15:19 0下面的这段代码是从网上找来的,不知道能否使用。先暂时收藏一下 ... -
spring hornetq selector 过滤消息
2012-12-20 23:31 1842在接收 JMS消息的时候,我们经常要在消息队列里面过滤出自己需 ... -
HornetQ vs ActiveMQ的简单性能对比测试
2012-06-19 17:22 2069自己做的“HornetQ vs ActiveMQ的简单性能对比 ... -
Spring 集成 HornetQ Topic 应用
2012-05-31 13:19 3194用HornetQ和Spring3做了一个简单的小例子,clie ... -
python通过stomp协议和hornetq进行连接
2012-02-20 18:31 6214============================= ... -
ActiveMQ VS HornetQ
2012-01-07 01:58 1385http://topmanopensource.iteye.c ...
相关推荐
- **8.2 一个内核的应用实例**:通过一个具体的例子展示了如何使用HornetQ内核。 #### 六、JMS与内核API之间的映射关系 - **9.1 映射关系**:解释了JMS API与HornetQ内核API之间的对应关系,有助于理解如何在不同...
文档通过简单的例子展示了如何使用核心API,同时也给出了JMS概念到核心API的映射方法。 最后,在客户端类路径章节中,文档提供了关于如何在客户端上设置类路径的说明,包括HornetQ核心客户端、JMS客户端和结合JNDI...
C编写的STOMP客户端, 是简单(或流)导向型的文本消息协议。 目录 介绍 c-stomp是一个C库,用于编写STOMP协议,以便与ActiveMQ,RabbitMQ,HornetQ,ActiveMQ Apollo和其他支持stomp的消息传递协议一起使用。 例子 ...
通常,我们需要指定JNDI名称,以便Spring能够通过JNDI查找并获取ConnectionFactory实例。 2. **Destination**: 这是消息的目标,可以是队列或主题。同样,也需要在Spring配置中定义,提供JNDI名称以便查找。 3. **...
3. `pom.xml` - Maven构建文件,定义了项目的依赖,如JBoss AS 6的相关库,Java EE 6 API,以及JMS实现(如hornetq或activemq)。 4. `README.md` - 项目说明,指导用户如何编译、部署和运行示例。 5. `deploy`或`...
标签"JBOSS"暗示了这个包与整个JBoss生态系统相关,这意味着它可能包含了一系列的工具和服务,如数据缓存(Infinispan)、消息队列( HornetQ )、事务处理(JTA)、安全认证(JAAS)等。这些组件使得JBoss成为一个...
3. **嵌入式部署**:JBoss7支持嵌入式部署,意味着你可以直接在你的应用代码中启动和控制JBoss实例,无需单独运行服务器进程,这对于测试和开发环境尤其便利。 4. **CLI和Management API**:JBoss7提供了强大的...
- 优点:简单易用,性能出色,阿里巴巴内部有大规模应用实例。 - 缺点:文档相对不足,未完全实现JMS接口。 #### 四、结论 综上所述,不同MQ产品各有特色和适用场景。对于寻求成熟稳定解决方案的企业,**ActiveMQ*...
Netty的核心设计理念包括:使用灵活、简单但功能强大的线程模型、统一的API、无连接的DatagramSocket支持以及链逻辑等。这些设计思想使得Netty拥有很高的性能,且易于使用。Netty提供了大量的文档和例子,帮助开发者...
在JBoss Fuse中,Apache Camel作为核心集成组件,可以与其他OSGi服务(如Zookeeper、HornetQ等)紧密协作,提供灵活的微服务架构和分布式解决方案。开发者可以通过JBoss Fuse的管理控制台或命令行工具,方便地监控和...