• mq消息队列


    rabbitmq学习9:使用spring-amqp发送消息及同步接收消息
    
        通过对spring-amqp看重要类的认识,下面来通过spring-amqp的发送消息及同步接收消息是如何实现的。有兴趣的朋友 可以去spring-amqp官网下载例子。
    
        先来看看HelloWorldConfiguration类
    
    Java代码  收藏代码
    package org.springframework.amqp.helloworld;  
      
    import org.springframework.amqp.core.Queue;  
    import org.springframework.amqp.rabbit.config.AbstractRabbitConfiguration;  
    import org.springframework.amqp.rabbit.connection.ConnectionFactory;  
    import org.springframework.amqp.rabbit.connection.SingleConnectionFactory;  
    import org.springframework.amqp.rabbit.core.RabbitTemplate;  
    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.Configuration;  
      
    @Configuration  
    public class HelloWorldConfiguration extends AbstractRabbitConfiguration {  
      
        protected final String helloWorldQueueName = "hello.world.queue";  
      
        @Bean  
        public ConnectionFactory connectionFactory() {  
            SingleConnectionFactory connectionFactory = new SingleConnectionFactory(  
                    "localhost");  
            connectionFactory.setUsername("guest");  
            connectionFactory.setPassword("guest");  
            return connectionFactory;  
        }  
      
        @Override  
        public RabbitTemplate rabbitTemplate() {  
            RabbitTemplate template = new RabbitTemplate(connectionFactory());  
            // The routing key is set to the name of the queue by the broker for the  
            // default exchange.  
            template.setRoutingKey(this.helloWorldQueueName);  
            // // Where we will synchronously receive messages from  
            template.setQueue(this.helloWorldQueueName);  
            return template;  
        }  
      
        @Bean  
        public Queue helloWorldQueue() {  
            return new Queue(this.helloWorldQueueName);  
        }  
    }  
     此类定义了ConnectionFactory 、RabbitTemplate 、Queue
    
    发送消息的程序如下:
    
    Java代码  收藏代码
    package org.springframework.amqp.helloworld;  
      
    import org.springframework.amqp.core.AmqpTemplate;  
    import org.springframework.context.ApplicationContext;  
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;  
      
    public class Producer {  
      
        public static void main(String[] args) {  
            ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfiguration.class);  
            AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);  
            amqpTemplate.convertAndSend("Hello World");  
            System.out.println("Sent: Hello World");  
        }  
      
    }  
     同步接收消息如下:
    
    Java代码  收藏代码
    package org.springframework.amqp.helloworld;  
      
    import org.springframework.amqp.core.AmqpTemplate;  
    import org.springframework.context.ApplicationContext;  
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;  
      
    public class Consumer {  
          
        public static void main(String[] args) {  
            ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfiguration.class);  
            AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);  
            System.out.println("Received: " + amqpTemplate.receiveAndConvert());  
        }  
      
    }  
     
    
    这个例子是Exchange类型为DirectExchange. routingkey的名称默认为Queue的名称。
    
    对于 HelloWorldConfiguration类的配置,也可以通过SPRING XML文件来配置。例如
    
    rabbitConfiguration.xml
    
     
    
     
    
    Java代码  收藏代码
    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
      
        <!-- 创建connectionFactory -->  
        <bean id="connectionFactory"  
            class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory">  
            <constructor-arg value="localhost" />  
            <property name="username" value="guest" />  
            <property name="password" value="guest" />  
        </bean>  
        <bean id="rabbitAdmin"  
            class="org.springframework.amqp.rabbit.core.RabbitAdmin">  
            <constructor-arg ref="connectionFactory" />  
        </bean>  
        <bean id="rabbitTemplate"  
            class="org.springframework.amqp.rabbit.core.RabbitTemplate">  
            <constructor-arg ref="connectionFactory"></constructor-arg>  
            <property name="queue" value="hello.world.queue"></property>  
            <property name="routingKey" value="hello.world.queue"></property>  
        </bean>  
      
        <!-- 声明Queue并设定Queue的名称 -->  
        <bean id="helloWorldQueue"  
            class="org.springframework.amqp.core.Queue">  
            <constructor-arg value="hello.world.queue"></constructor-arg>  
        </bean>  
          
    </beans>  
     
  • 相关阅读:
    Javascript的ajax
    关于跨模块拿取数据的思路AJAX实现
    JAVA的整型与字符串相互转换
    接口返回数据和数组
    接口返回数据是一条数据和一个数组的区别
    最初的代码
    http发送请求方式;分为post和get两种方式
    Java学习---- 数组的引用传递
    Java学习--数组与方法
    Java学习--数组的定义和使用
  • 原文地址:https://www.cnblogs.com/leo3689/p/4209587.html
Copyright © 2020-2023  润新知