Java中间消息件ActiveMQ怎么用
创始人
2024-12-23 17:42:44
0次

什么是中间消息间吧。

采用消息传送机制/消息队列 的中间件技术,进行数据交流,用在分布式系统的集成。Java中对Jms有了定义,这是Java消息的统一接口。什么是ActiveMq呢?这是这个接口的一种实现,相当于数据库连接驱动一样,不同厂商有自己不同的实现,我们尽快看怎么用代码实现吧。

消息一共有两种接收和发送形式:点对点和发布定阅模式,也就是“一对一”和“一对多”。

1.导包(maven):

     org.apache.activemq      activemq-client      5.13.4    

2.开始写类,提供者(发送者)和消费者(接收者)是两个不同的项目,我们先创建普通的maven项目,而不是web项目点对点的方式(消息只能被消费一次,如果同时有多个消费者,谁先抢到就是谁的)

消息提供者

public static void main(String[] args) throws JMSException {    //创建连接工厂,这个参数就是自己的activeMQ的地址    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");    //2.创建连接    Connection connection = connectionFactory.createConnection();    //3.启动连接    connection.start();    //4.获取session(会话对象)    /*    arg0 是否启用事务    arg1 消息的确认方式 自动确认     */    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);    //5.创建一个队列对象,名称    Queue firstQueue = session.createQueue("firstQueue");    //6.创建一个消息的生产者对象//    Destination destination = ;//目标对象    MessageProducer producer = session.createProducer(firstQueue);    //7.创建一个消息    TextMessage textMessage = session.createTextMessage("欢迎来到奇的天喻软件");    //8.发送消息    producer.send(textMessage);    //9.关闭资源    producer.close();    session.close();    connection.close();  }

消息消费者

前几步是一样的,都是创建连接,只有第6步不一样,创建的是一个消费者

public static void main(String[] args) throws JMSException, IOException {    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");    //2.创建连接    Connection connection = connectionFactory.createConnection();    //3.启动连接    connection.start();    //4.获取session(会话对象)    /*    arg0 是否启用事务    arg1 消息的确认方式 自动确认     */    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);    //5.创建一个队列对象,名称    Queue firstQueue = session.createQueue("firstQueue");    //6.创建消息消费者对象    MessageConsumer consumer = session.createConsumer(firstQueue);    //7.设置监听    consumer.setMessageListener(new MessageListener() {      @Override      public void onMessage(Message message) {        TextMessage textMessage = (TextMessage)message;        try {          System.out.println("提取的消息是"+textMessage.getText());        } catch (JMSException e) {          e.printStackTrace();        }      }    });    //8.等待键盘输入    //目的是为了让程序停止来看效果    System.in.read();    //9.关闭资源    consumer.close();    session.close();    connection.close();  }

发布订阅模式(发布消息后,只有在之前运行的消费者才能收到,消息被任何一个消费者消费后,以后启动的消费者不能消费之前的消息)

消息提供者

//创建连接工厂    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");    //2.创建连接    Connection connection = connectionFactory.createConnection();    //3.启动连接    connection.start();    //4.获取session(会话对象)    /*    arg0 是否启用事务    arg1 消息的确认方式 自动确认     */    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);    //5    Topic topic = session.createTopic("first-topic");    //6.创建一个消息的生产者对象//    Destination destination = ;//目标对象    MessageProducer producer = session.createProducer(topic);    //7.创建一个消息    TextMessage textMessage = session.createTextMessage("欢迎来到奇的天喻软件");    //8.发送消息    producer.send(textMessage);    //9.关闭资源    producer.close();    session.close();    connection.close();

消费者

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");    //2.创建连接    Connection connection = connectionFactory.createConnection();    //3.启动连接    connection.start();    //4.获取session(会话对象)    /*    arg0 是否启用事务    arg1 消息的确认方式 自动确认     */    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);    //5    Topic topic = session.createTopic("first-topic");    //6.创建消息消费者对象    MessageConsumer consumer = session.createConsumer(topic);    //7.设置监听    consumer.setMessageListener(new MessageListener() {      @Override      public void onMessage(Message message) {        TextMessage textMessage = (TextMessage)message;        try {          System.out.println("提取的消息是"+textMessage.getText());        } catch (JMSException e) {          e.printStackTrace();        }      }    });    //8.等待键盘输入    //目的是为了让程序停止来看效果    System.in.read();    //9.关闭资源    consumer.close();    session.close();    connection.close();

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...