JMS和企业集成

JMS(Java Message Service)是一种用于在分布式系统中发送和接收消息的API,它提供了一种简单的方法来实现异步通信,JMS最初是由Sun Microsystems(现已被Oracle收购)开发的,现在是Java EE规范的一部分,本文将介绍JMS的基本概念、使用方法以及与企业集成的相关技术。

JMS基本概念

1、1 JMS定义

JMS和企业集成

JMS(Java Message Service)是一种用于在分布式系统中发送和接收消息的API,它提供了一种简单的方法来实现异步通信,JMS最初是由Sun Microsystems(现已被Oracle收购)开发的,现在是Java EE规范的一部分。

1、2 JMS类型

JMS主要有两种类型的消息:点对点(Point-to-Point)和发布/订阅(Publish/Subscribe),点对点消息是指一个生产者发送给一个消费者的消息,而发布/订阅消息是指一个主题可以有多个消费者订阅,每个消费者都可以收到所有发布到该主题的消息。

JMS使用方法

2、1 创建连接工厂

要使用JMS,首先需要创建一个连接工厂,连接工厂是一个配置对象,用于创建连接实例,创建连接工厂的方法如下:

import javax.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory;
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

2、2 创建连接

创建连接需要提供连接工厂和一些连接属性,连接属性包括用户名、密码、虚拟主机等,创建连接的方法如下:

JMS和企业集成

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.Topic;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQSession;
import org.apache.activemq.command.ActiveMQTopic;
Context context = new InitialContext();
Connection connection = (Connection) context.lookup("ConnectionFactory");
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("testTopic");

2、3 发送消息

创建连接和会话后,可以使用会话对象发送消息,发送消息的方法如下:

import javax.jms.MessageProducer;
import javax.jms.QueueSender;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQSession;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.apache.activemq.pool.PooledConnectionFactory;
import org.apache.activemq.pool.PooledConnectionFactoryImpl;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import java.util.concurrent.TimeUnit;
public class SendMessage {
    public static void main(String[] args) throws NamingException, JMSException {
        Context context = new InitialContext();
        PooledConnectionFactory pooledConnectionFactory = (PooledConnectionFactory) context.lookup("pooledConnectionFactory");
        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(10);
        poolConfig.setMaxIdle(5);
        poolConfig.setMinIdle(2);
        poolConfig.setMaxWaitMillis(10000);
        poolConfig.setTestOnBorrow(true);
        poolConfig.setTestOnReturn(true);
        poolConfig.setTestWhileIdle(true);
        poolConfig.setTimeBetweenEvictionRunsMillis(30000);
        poolConfig.setNumTestsPerEvictionRun(-1);
        poolConfig.setMinEvictableIdleTimeMillis(-1);
        poolConfig.setSoftMinEvictableIdleTimeMillis(-1);
        poolConfig.setLifo(false);
        poolConfig.setMaxWaitMillisWhenExhausted(-1);
        pooledConnectionFactory = new PooledConnectionFactoryImpl(new ActiveMQConnectionFactory(), poolConfig);
        Connection conn = pooledConnectionFactory.getPooledConnection();
        Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Topic topic = session.createTopic("testTopic");
        QueueSender sender = session.createSender(topic);
        TextMessage message = session.createTextMessage("Hello, JMS!");
        sender.send(message);
    }
}

2、4 接收消息

创建连接和会话后,可以使用会话对象接收消息,接收消息的方法如下:

```java import javax

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/132519.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2023-12-16 02:48
Next 2023-12-16 02:51

相关推荐

  • 怎么在html页面执行删除文字

    在HTML页面执行删除操作,通常涉及到前端JavaScript和后端服务器的交互,这里我们将详细介绍如何在HTML页面上实现删除功能。1. 前端JavaScript实现删除在前端JavaScript中,我们可以使用DOM(文档对象模型)来操作HTML元素,要实现删除功能,首先需要获取到要删除的元素,然后调用removeChild()方……

    2023-12-31
    0254
  • redis 反向查询

    r.lpush 将当前使用的后端服务器添加到列表头部,以便下次使用相同的算法选择后端服务器时能够重新开始轮询计数器。session.verify = False 不验证目标服务器的身份证书,仅用于测试环境时关闭验证功能。response = session.get 通过Session对象发送HTTPS请求并获取响应内容

    2023-12-15
    0132
  • java中request.getSession的获取方式有哪些

    在Java Web开发中,Session是一种服务器端存储技术,用于在多个请求之间保持用户的状态,request.getSession()是获取Session对象的一种常用方法,本文将介绍request.getSession()的获取方式及其相关技术。1、request.getSession()的基本用法request.getSess……

    2024-01-22
    0129
  • java中session和cookie的区别

    要实现Session和Cookie的统一管理,可以使用第三方库来封装这些功能,这些库提供了简单易用的API,可以帮助开发者轻松地实现会话管理和Cookie管理功能,2.2 如何避免Session和Cookie被滥用?Java本身并不支持根据用户的操作系统选择使用Session还是Cookie的功能,可以通过编写前端代码来实现这一功能,前端代码可以根据用户的操作系统类型来决定是否需要使用Cook

    2023-12-26
    0108
  • session 和 cookie 的区别和联系

    Session和Cookie的区别1、定义与原理Session(会话):Session是服务器端为用户创建的一个独立的数据存储空间,用于存储用户在浏览器会话期间的操作数据,当用户关闭浏览器或者刷新页面时,Session会失效,服务器端会自动删除与该用户相关的Session信息。Cookie:Cookie是服务器端通过HTTP响应头发送……

    2024-01-03
    0205
  • 怎样解析tomcat内部结构和请求过程

    Tomcat是一个用于Java Servlet和JSP的Web服务器,它实现了对Servlet和JavaServer Page (JSP)的支持,并提供了作为Web服务器的一些特性,如处理HTML文件,Tomcat的主要组件包括:1. **Server**:这是Tomcat的主类,负责初始化和启动所有的组件。2. **Service*……

    2023-11-17
    0107

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入