ActiveMQ做消息队列拦截功能

本文介绍了如何使用ActiveMQ实现消息队列的权限拦截功能。首先从官网下载并运行ActiveMQ,验证服务器运行正常。接着,为了实现权限校验,需要开发拦截器插件,并将其与数据库连接整合。详细步骤包括编写拦截器、注册类、打包插件、修改activemq.xml配置文件、添加数据库配置和启动插件。最后,通过测试不同情况的发送验证了权限拦截的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActiveMQ做消息队列拦截功能

操作步骤

  1. 首先先到ActiveMQ官网下载最新的最稳定的版本 http://activemq.apache.org/activemq-5158-release.html 我下载的是Windows版本的
  2. 直接解压双击运行bin/win64/activemq.bat . 弹出黑窗口 (黑窗口不要关) 访问localhost:8161 如果出现页面 说明运行成功 登录密码为 admin /admin
  3. 测试向本地的ActiveMQ服务器发送消息
		//1.创建连接工厂  默认接收消息的端口为61616
		ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://localhost:61616");
		//2.创建连接
		Connection connection = connectionFactory.createConnection();
		//3.启动连接
		connection.start();
		//4.获取session(会话对象)  参数1:是否启动事务  参数2:消息确认方式
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		//5.创建主题对象 发送的主题列
		Topic topic = session.createTopic("test");
		//6.创建消息生产者对象
		MessageProducer producer = session.createProducer(topic);
		//7.创建消息对象(文本消息)
		TextMessage textMessage = session.createTextMessage("这是一条消息");
		//8.发送消息
		producer.send(textMessage);
		//9.关闭资源
		producer.close();
		session.close();
		connection.close();
  1. 查看监控页面 消息已经发送成功
    在这里插入图片描述
  2. 默认的消息服务器是没有权限校验的 也就是说 谁都可以对消息队列服务器中的消息进行发送和监听 只要知道消息队列服务器的url
  3. 要想做权限校验 就需要对消息队列服务器做开发 来进行 权限的拦截 而ActiveMQ本身就支持本身做插件开发的
  4. 编写权限拦截器插件 请根据自己的需求编写校验
/**
 * 因为不同的需求有着不同的校验方式  
 * @author GEP
 * ActiveMQ消息拦截器
 */
public  class  ActivemqFilter extends BrokerFilter {
   
   
    private static final Logger logger = LoggerFactory.getLogger(ActivemqFilter.class);

	private final String PRODUCER_IDENTTIFICATION = "producer";

    private final String CUSTOMER_IDENTTIFICATION="customer";

    /**
     * 消息生产者对应的标识
     */
    private final String PRODUCER_NUMBER = "1";

    /**
     * 消息消费者对应的标识
     */
    private final String CUSTOMER_NUMBER = "2";

    /**
     * 超级管理员对应的标识
     */
    private final String SUPER_NUMBER = "0";
	//用户 这里是封装成实体对象
    private  User user ;
    //数据库连接  将用户的信息存到数据库方便进行管理
 	private JdbcTemplate jdbcTemplate;


    public ActivemqFilter(Broker next,JdbcTemplate jdbcTemplate) {
   
   
        super(next);
        this.jdbcTemplate = jdbcTemplate;
    }

    /**
     * 发送消息经过拦截器 这里是创建连接之后 对发送消息进行校验
     * @
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值