1。首先配置jboss的jbossmq,启动jboss(启动jboss时会同时启动mq,使用其他mq时类似,需要配置启动mq)
2。在spring中进行消息发送接收者的相关配置(封装了jms发送与接收的模版)
<!-- jndi配置 -->
<bean id="jndiTemplate"
class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
org.jnp.interfaces.NamingContextFactory
</prop>
<prop key="java.naming.provider.url">172.16.13.79</prop>
<prop key="java.naming.factory.url.pkgs">
org.jnp.interfaces:org.jboss.naming
</prop>
</props>
</property>
</bean>
<!-- jms连接工厂配置 -->
<bean id="jmsConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate" />
</property>
<property name="jndiName">
<value>ConnectionFactory</value>
</property>
</bean>
<!-- 目标队列配置 -->
<bean id="destination"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate" />
</property>
<property name="jndiName">
<value>queue/A</value>
</property>
</bean>
<!-- 生产者配置 -->
<bean id="messageProducer"
class="com.xhb.test.jms.MessageProducer">
<property name="template" ref="jmsQueueTemplate" />
<property name="destination" ref="destination" />
</bean>
<!-- jms模版 -->
<bean id="jmsQueueTemplate"
class="org.springframework.jms.core.JmsTemplate102">
<property name="connectionFactory">
<ref bean="jmsConnectionFactory" />
</property>
<property name="defaultDestination" ref="destination" />
<property name="pubSubDomain">
<value>false</value>
</property>
<property name="receiveTimeout">
<value>20000</value>
</property>
</bean>
<!-- 监听器 -->
<bean id="messageListener"
class="com.xhb.test.jms.MessageConsumer">
</bean>
<!-- 监听器容器 -->
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="destination" />
<property name="messageListener" ref="messageListener" />
</bean>
3。原生使用的jms方式如下
(1) 得到一个JNDI初始化上下文(Context);
例子对应代码:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx = new InitialContext(props);
注意:可以写在代码中,也可以写在jndi.properties文件中.
(2) 根据上下文来查找一个连接工厂TopicConnectFactory/ QueueConnectionFactory (有两种连接工厂,根据是topic/queue来使用相应的类型);
例子对应代码:
QueueConnectionFactory qcf =(QueueConnectionFactory) ctx.lookup("ConnectionFactory");
(3) 从连接工厂得到一个连接(Connect 有两种[TopicConnection/ QueueConnection]);
例子对应代码:conn = qcf.createQueueConnection();
(4) 通过连接来建立一个会话(Session);
例子对应代码:session= conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
这句代码意思是:建立不需要事务的并且能自动接收Java消息服务收条的会话,在非事务Session 中,JMS消息传递的方式有三种:
Session.AUTO_ACKNOWLEDGE :当客户机调用的receive方法成功返回,或当MessageListenser 成功处理了消息,session将会自动接收消息的收条。
Session.CLIENT_ACKNOWLEDGE
:客户机通过调用消息的acknowledge方法来接收消息。接收发生在session层。接收到一个被消费的消息时,将自动接收该session已经
消费的所有消息。例如:如果消息的消费者消费了10条消息,然后接收15 个被传递的消息,则前面的10 个消息的收据都会在这15 个消息中被接收。
Session.DUPS_ACKNOWLEDGE :指示session缓慢接收消息。
session是一个非常核心的概念,在一次session(会话中)可以发送消息,也可以消费消息,消费消息时既可以主动去消费也可以设置针对消息队列的监听,被动触发处理,设置监听示例如下。
QueueReceiver reciver = session.createReceiver(queue);
reciver.setMessageListener(listener);
(5) 查找目的地(Topic/ Queue);
例子对应代码:queue =(Queue) ctx.lookup("queue/jms");
(6) 根据会话以及目的地来建立消息制造者(TopicPublisher/QueueSender)和消费者(TopicSubscriber/QueueReceiver).
例子对应代码:
msg = session.createTextMessage("你好,好久不见!");
sender = session.createSender(queue);
sender.send(msg);
分享到:
相关推荐
在JBoss环境下,这些组件可以通过Spring配置文件集成到服务器中,实现消息的自动发送和接收。 配置文件中,开发者需要定义JMS连接工厂、目的地(队列或主题)以及JMSTemplate的bean。此外,还可以利用Spring的事务...
Spring JMS是Spring框架对JMS的封装,它提供了一种声明式的方式来配置JMS模板、监听容器等,极大地简化了开发者的任务。Spring JMS可以处理点对点(P2P)和发布/订阅(Pub/Sub)两种消息模式,这两种模式在分布式...
在JBOSS环境下,Spring拦截器可以帮助实现更深层次的整合。 - **2.4.1 JBoss + Spring + EJB3.0集成** 在JBOSS应用服务器上集成Spring和EJB3.0可以充分利用这两种技术的优势。Spring可以简化EJB3.0组件的配置和...
总的来说,基于Jboss的JMS编程涉及到Spring的集成、JNDI配置、连接工厂的创建、消息模板的使用,以及对JMS基本概念的理解。通过这些知识,开发者可以创建可靠的、基于消息的系统,提高应用程序的可伸缩性和解耦性。
1. 配置 JMS 容器(如 ActiveMQ、IBM WebSphere MQ 或 JBoss MQ)。 2. 在 Spring 配置文件中定义 JmsTemplate 和消息目的地(队列或主题)。 3. 使用 JmsTemplate 的 send 方法发送消息,指定目的地和消息内容。 4....
总之,这个"JMS相关的Source"可能包含了一个简单的Spring配置文件,展示了如何在JBoss环境中集成JMS服务,并使用Spring的工具进行消息的发送和接收。开发者可以参考这些代码来学习如何在自己的项目中实现异步通信和...
1. **配置JBoss**:首先,你需要将Spring和Hibernate的相关库添加到JBoss的类路径中,并且可能需要对JBoss的配置文件进行调整,以支持Spring和JTA。 2. **配置Spring**:创建Spring的配置文件,定义数据源、...
在Windows环境下部署JBOSS 5.1.0作为Web应用服务器,涉及到一系列配置步骤,包括集成Spring框架、设置环境变量、修改默认配置以及配置SSL安全连接。以下是对这些步骤的详细说明: 1. **下载JBOSS-5.1.0.GA-jdk6.zip...
3. **配置Spring**:在Spring的配置文件中,声明JMS的ConnectionFactory和Destination。使用`<jee:jndi-lookup>`标签来引用在JNDI中定义的MQ资源。同时,配置MessageListener接口的实现类,以便在接收到消息时执行...
1. **核心服务**:JBoss的核心服务包括事务管理、安全管理、命名与目录服务、JMS消息队列等。这部分源代码展示了如何实现这些基础服务,并与Java EE规范相集成。例如,`jboss.getTransaction`包下的源码涉及到JTA...
然后,将TOMCAT的webapps目录下的所有应用复制到JBOSS的deploy目录下,使得JBOSS能接管这些应用的部署。 2. **配置启动脚本**:修改JBOSS的启动脚本(如`run.sh`或`run.bat`),确保在启动JBOSS时同时启动TOMCAT。 ...
1. **配置 standalone.xml**:这是 JBoss 的主要配置文件,位于 `JBOSS_HOME/standalone/configuration` 目录下。你可以在这里配置服务器的端口、内存大小、数据源、连接池等参数。 2. **部署应用**:将你的应用...
4. **Spring整合**:《JBoss_ESB学习笔记13——第十个ESB应用Spring_AOP.doc》和《JBoss_ESB学习笔记12——第十个ESB应用Spring_helloworld.doc》涉及到Spring框架与ESB的结合,Spring AOP(面向切面编程)在ESB中的...
它不仅支持Java EE的各种服务,如EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTA(Java Transaction API)等,还提供了对Spring、Hibernate等开源框架的集成。 2. **安装与配置**:JBoss的安装...
`java:` 下的命名空间仅在 JBoss 服务器的虚拟机内可见,而不对远程客户端开放。而其他任何上下文或对象绑定,只要支持序列化,都可以被远程客户端访问。 **资源管理器连接工厂引用 (Resource Manager Connection ...
可以通过Jaas配置安全域,或者使用Spring Security等第三方库进行扩展。 7. **集群与高可用性** JBoss支持多服务器集群,可以实现负载均衡和故障转移,提高系统的可用性和可伸缩性。集群配置涉及网络通信、会话...
1. **Spring框架集成**:JBoss 可以无缝集成Spring框架,允许开发者利用Spring的强大功能,如依赖注入、AOP(面向切面编程)等。 2. **数据库连接**:JBoss 支持多种数据库,如MySQL、Oracle、PostgreSQL等,通过...
【ESB应用Spring_Hello_World】是针对JBoss ESB的一个示例教程,它展示了如何在ESB中集成Spring框架来实现一个简单的服务调用。这个应用的主要目的是演示基于Spring的action调用机制,利用ESB进行消息传递和处理。 ...
读者将学习如何在各种操作系统环境下搭建JBoss环境,理解JBoss的目录结构和配置文件,以及如何启动、停止和监控JBoss服务器。此外,书中还会讲解如何使用管理控制台进行服务器配置和管理。 接着,深入到Java EE的...