configuración de autenticación de seguridad y demostración de código simple de activemq

1. Cola en modo punto a punto de código simple

Introducir dependencias

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

Productor

    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();
    }

consumidor

   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();

    }

Modelo de publicación por suscripción

Productor

 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();
    }

abonado

 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. Agregue autenticación de seguridad simple al archivo de configuración mq y reinicie el servidor mq

 <plugins>
                <simpleAuthenticationPlugin>
                         <users>
                                <authenticationUser username = "admin" contraseña = "contraseña" grupos = "usuarios, administradores" />
                                <authenticationUser username = "consumidor" contraseña = "consumidor" grupos = "consumidores" />
                                < authenticationUser username = "productor" contraseña = "productor" grupos = "productores" />
                                <authenticationUser username = "editor" contraseña = "publicador" grupos = "editores, consumidores" />
                         </users>
                </simpleAuthenticationPlugin>
        </plugins>
 

 Necesita modificar la conexión, ingrese la contraseña de la cuenta de usuario en la conexión

Productor

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

consumidor

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

Establecer el modo de autenticación de seguridad de jaas

Enlace de reimpresión: https://blog.csdn.net/chao_1990/article/details/55270922

La configuración de login.properties hace referencia a la información del usuario en users.properties groups.properties

Configurar grupos de usuarios: vim groups.properties 

Configurar la contraseña de la cuenta de usuario:

Configure en el archivo de configuración actimvemq.conf

                             <! - configuración se refiere a la configuración correspondiente a
            login.properties ->    <jaasAuthenticationPlugin configuration = "activemq" />

            <authorizationPlugin>
                <map>
                    <authorizationMap>
                            <authorizationEntries>
                             <! - Configurar cada autenticación específica> significa hacer coincidir todas las colas o temas. 
                             Leer que los usuarios pueden leer, escribir (enviar mensajes), administrador, el usuario de mayor autoridad-->   
                                    < autorizaciónEntry queue = ">" leer = "consumidores" escribir = "productores" admin = "administradores" />
                                    <autorizaciónEntry tema = ">" leer = "consumidores" escribir = "editores" admin = "administradores" />
                                    
                            </ autorizaciónEntries >
                    </ AuthorizationMap>
                </map>
            </authorizationPlugin>

Esto simplemente configura el permiso para enviar y recibir mensajes.

Supongo que te gusta

Origin blog.csdn.net/xiaodujava/article/details/84932292
Recomendado
Clasificación