搭建activemq

1.pom.xml里面:

<!-- activemq  jmsTemplate-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
            <version>5.14.5</version>
        </dependency>

2.application.properties里面:

#activemq
spring.activemq.broker-url: tcp://localhost:61616
spring.activemq.user: admin
spring.activemq.password: admin
#true是topic,说明:生产者,消费者抢,同时,两条,不会保存
#flase是queue,说明:11 有记录 安全
#spring.jms.pub-sub-domain: true
spring.activemq.pool.enabled: false
spring.activemq.pool.max-connections=50
#spring.activemq.pool.expiry-timeout=10000
spring.activemq.pool.idle-timeout=30000
spring.application.name: influxdb-demo

3.ProducerController里面:

package com.tenoic.qq.controller;

import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import javax.jms.Destination;


/**
 * @auther xu
 * @date 2019-10-23 13:48
 * @function  生产者
 * @return
 */

@Component
public class ProducerController {

    @Resource
    private JmsMessagingTemplate jmsMessagingTemplate;

    public void sendMessage(Destination destination, String message){

        jmsMessagingTemplate.convertAndSend(destination, message);
    }

}

4.Listener:我起的名字QqApplication:

package com.tenoic.qq;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.event.EventListener;

import java.awt.*;
import java.io.IOException;
import java.net.URISyntaxException;

@SpringBootApplication
@EnableCaching
public class QqApplication {
    /*主启动*/
    public static void main(String[] args) {
        SpringApplication.run(QqApplication.class, args);
        System.out.println("端口启动");

    }
    /*当端口启动后,直接跳转界面*/
    @EventListener({ApplicationReadyEvent.class})
    void applicationReadyEvent() {
        System.out.println("应用已经准备就绪 ... 启动浏览器");
        String url = "http://localhost:8089/system/index.jsp";
        Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec("rundll32 url.dll,FileProtocolHandler " + url);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5.QqApplicationTests里面:

package com.tenoic.qq;

import com.tenoic.qq.controller.ProducerController;
import org.apache.activemq.command.ActiveMQQueue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import javax.jms.Destination;

@RunWith(SpringRunner.class)
@SpringBootTest
public class QqApplicationTests {

    @Resource
    private ProducerController producerController;

    @Test
    public void contextLoads() {
        Destination destination = new ActiveMQQueue("message.queue");
        producerController.sendMessage(destination,"[//传入json]");
    }
}

6.CoumterController里面:

package com.tenoic.qq.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.tenoic.qq.configs.InfluxDBConfig;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;


/**
 * @auther xu
 * @date 2019-10-23 13:39
 * @function  消费者
 * @return
 */
@RestController
@Component
public class CoumterController {

    private InfluxDBConfig influxDBConfig;

    @JmsListener(destination = "message.queue")

    public void  receiveQueue(String jsonobject){

        influxDBConfig = InfluxDBConfig.setUp();
        /*接收消息*/
        System.out.println("收到消息 =["+jsonobject+"]");
        /*解析json,知道key*/
        JSONArray jsonArray1 = JSON.parseArray(jsonobject);
        JSONArray jsonArray = new JSONArray(jsonArray1);
        /*Map<String,Object> contents = new HashMap<>();*/
        for(int i=0;i<jsonArray.size();i++) {
            JSONObject object = jsonArray.getJSONObject(i);
            String id = object.getString("id");
            String name = object.getString("name");
            String bb = object.getString("bb");
            String timeData = object.getString("timeData");
            /*获取当前时间转为yyyy-mm-dd*/
            long currentTimeMillis = System.currentTimeMillis();
           /* String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));*/
            /*UTC时间加上8小时*/
            /*插入时序数据库*/
            Map<String,String> tags = new HashMap<>();
            tags.put("id",id);
            Map<String,Object> fields = new HashMap<>();
            fields.put("name",name);
            fields.put("bb",bb);
            fields.put("timeData",timeData);
            fields.put("currentTimeMillis",currentTimeMillis);
            influxDBConfig.insert("",tags,fields);

        }
    }
}

7.activemq下载,登录http://localhost:8161 查看发送消息,接收消息等

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Docker搭建ActiveMQ集群,你可以按照以下步骤进行操作: 1. 创建Dockerfile:首先,你需要创建一个Dockerfile来定义ActiveMQ容器的构建规则。在Dockerfile中,你可以指定基础镜像、安装必要的软件和配置ActiveMQ。 2. 使用docker-compose进行搭建:docker-compose是一个用于定义和运行多个容器应用的工具。你可以使用docker-compose.yml文件定义ActiveMQ集群的配置,包括容器的数量、网络设置和映射端口等。 3. 使用commit镜像:根据引用中的建议,使用commit镜像来保存配置和修改。当你对容器进行修改后,可以使用docker commit命令将修改后的容器保存为新的镜像。 4. 设置静态网络:根据引用中的提示,确保在设置ActiveMQ的静态网络时,两个节点之间不能有空格,否则会报错。你可以在docker-compose.yml文件中指定容器之间的通信方式,如tcp://192.168.1.3:61617,tcp://192.168.1.4:61618。 5. 启动容器并查看日志:使用docker-compose命令启动容器,然后通过docker ps命令查看所有容器的状态。如果发现容器启动后马上退出,你可以使用docker logs -f 容器ID命令查看容器的日志,以便进行故障排查。 需要注意的是,在搭建ActiveMQ集群之前,你需要对broker的具体作用有一定的了解,以便正确配置和管理集群。此外,你还可以使用Idea编写Java客户端来进行生产和消费消息,以满足具体的业务需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [docker 建立activemq集群](https://blog.csdn.net/kang389110772/article/details/78270875)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值