activemq 简单代码演示 和 安全认证设置

1. 简单代码 点对点模式 queue

引入依赖

   <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-all</artifactId>
            <version>5.15.4</version>
        </dependency>

生产者

    public static void main(String[] args) throws Exception {
//        创建mq 连接工厂
        ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://106.12.196.23:61616");
//        创建连接
        Connection connection = cf.createConnection();
//        开启连接
        connection.start();
//        创建一个session会话   第一个参数 是否支持事务, 第二个接受的类型
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//        创建队列
        Queue q = session.createQueue("my_queue01");
//        创建消息生产者
        MessageProducer producer = session.createProducer(q);
//        创建消息
        TextMessage textMessage = session.createTextMessage();
//        设置消息内容
        textMessage.setText("我是测试的第一个 mq queue01");
//        发送消息
        producer.send(textMessage);
//        关闭资源
        producer.close();
        session.close();
        connection.close();
    }

消费者

   public static void main(String[] args) throws Exception{
//        创建连接工厂
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://106.12.196.23:61616");
//        创建连接
        Connection connection = factory.createConnection();
//        开启连接
        connection.start();
//        创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//        创建要连接的队列
        Queue queue01 = session.createQueue("my_queue01");
//        创建消费者
        MessageConsumer consumer = session.createConsumer(queue01);
//        接受消息
        TextMessage message = (TextMessage) consumer.receive();
        String text = message.getText();
        System.out.println(text);
        consumer.close();
        session.close();
        connection.close();

    }

订阅发布 模式

生产者

 public static void main(String[] args) throws JMSException {
//        创建连接工厂
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://106.12.196.23:61616");
//        创建连接
        Connection connection = factory.createConnection();
//        开启连接
        connection.start();
//        创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//        创建主题
        Topic topic =session.createTopic("my_topic01");
//        创建消息生产者
        MessageProducer producer = session.createProducer(topic);
//       创建消息 并设置消息内容
        TextMessage message = session.createTextMessage("我是第一个测试的topic");
//        发送消息
        producer.send(message);
//        关闭资源
        producer.close();
        session.close();
        connection.close();
    }

订阅者

 public static void main(String[] args) throws  Exception {
//        创建连接工厂
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://106.12.196.23:61616");
//        创建连接 并 开启连接
        Connection connection = factory.createConnection();
//        设置客户端连接id 订阅者模式需要设置clientID
        connection.setClientID("topic_client01");
        connection.start();
//        创建连接会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//        创建topic
        Topic my_topic01 = session.createTopic("my_topic01");
//        创建订阅者
        TopicSubscriber subscriber = session.createDurableSubscriber(my_topic01, "topic-01");
//        接受消息
        TextMessage message = (TextMessage) subscriber.receive();
        System.out.println(message.getText());
//         关闭资源
        subscriber.close();
        session.close();
        connection.close();
    }

2.在mq的配置文件中 添加简单安全认证  并重启mq服务器

 <plugins>
                <simpleAuthenticationPlugin>
                         <users>
                                <authenticationUser username="admin" password="password" groups="users,admins"/>
                                <authenticationUser username="consumer" password="consumer" groups="consumers"/>
                                <authenticationUser username="producer" password="producer" groups="producers"/>
                                <authenticationUser username="publisher" password="publisher" groups="publishers,consumers"/>
                         </users>
                </simpleAuthenticationPlugin>
        </plugins>
 

 需要修改连接,在连接中输入用户账号密码

生产者

//        创建连接 输入账号密码
        Connection connection = cf.createConnection("admin", "password");

消费者

     Connection connection = factory.createConnection("consumer", "consumer");

设置jaas 的安全认证模式

转载连接:https://blog.csdn.net/chao_1990/article/details/55270922

login.properties 配置  引用 users.properties  groups.properties的用户信息

配置用户组:vim groups.properties 

配置用户账号密码:

在配置文件中actimvemq.conf中配置

                             <!--configuration引用的是login.properties 中的配置相对应-->   
            <jaasAuthenticationPlugin configuration="activemq"/>

            <authorizationPlugin>
                <map>
                    <authorizationMap>
                            <authorizationEntries>
                             <!--配置每个具体的认证  > 表示匹配所有队列或者topic 
                             read 那些用户可以读权限,write 写(发送消息)权限,admin 最高权限用户-->   
                                    <authorizationEntry queue=">" read="consumers" write="producers" admin="admins"/>
                                    <authorizationEntry topic=">" read="consumers" write="publishers" admin="admins"/>
                                    
                            </authorizationEntries>
                    </authorizationMap>
                </map>
            </authorizationPlugin>

这样就简单配置好了 消息的 发送 接受 的权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值