Springboot整合Rabbitmq

  • pom导入jar
        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-amqp</artifactId>
		</dependency>
  • application.properites做配置
#rabbitmq地址:此处为linux系统
spring.rabbitmq.host=192.168.77.101
#端口号:默认是5672
spring.rabbitmq.port=5672
#rabbitmq账号密码
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
  • 创建队列
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//初始化时创建队列
@Configuration
public class TestQueue {

    @Bean
    public Queue creatQuene(){
        return new Queue("testQueue");
    }
}
  • 创建消息的发送者
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 创建消息的发送者
 */
@Component
public class Sender {

    /**
     * 通过AmqpTemplate发送消息给队列
     */
    @Autowired
    private AmqpTemplate rabbitmqTemplate;

    /**
     *  创建发送消息的方法
     */
    public void sendMessage(String msg){
        this.rabbitmqTemplate.convertAndSend("testQueue",msg);
    }
}
  • 创建消息的接受者
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * 创建消息的接收者
 */
@Component
public class Recever {

    /**
     * 通过消息队列的监听机制接收消息
     */
    @RabbitListener(queues = "testQueue")
    public void receiveMessage(String msg){
        System.out.println("收到的消息是:"+ msg);
    }
}
  • 测试方法
import com.example.Springbootdemo.rabbitmq.Sender;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

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

	@Autowired
	private Sender sender;
	//测试消息队列
	@Test
	public void contextLoads() {

		this.sender.sendMessage("hollo rabbitmq");
	}

}
  •  结果

  • Rabbitmq原理

 

  1. Message 消息。消息是不具名的,它由消息头消息体组成。消息体是不透明的,而消息头则由 一系列可选属性组成,这些属性包括:routing-key(路由键)priority(相对于其他消息的优先 )delivery-mode(指出消息可能持久性存储)
  2. .Publisher 。 消息的生产者。也是一个向 交换器 发布消息的 客户端应用程序
  3.  
    .Consumer 。 消息的消费者。表示一个从消息队列中取得消息的客户端应用程序。
  4. .Exchange 交换器。用来接收生产者发送的消息并将这些消息 路由给服务器中的队列。 三种常用的交换器类型 :
  • ​​​​​​​direct(发布与订阅 完全匹配)
  • fanout(广播)
  • topic(主题,规则匹配)

 

5.Binding 绑定。用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息 队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表

6.Queue 消息队列。用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一 个消息可投入一个或多个队列。消息一直在队列里面,等待消费者链接到这个队列将其取走

7.Routing-key 。路由键。RabbitMQ 决定消息该投递到哪个队列的规则。 队列通过路由键绑定到交换器。 消息发送到 MQ 服务器时,消息将拥有一个路由键,即便是空的,RabbitMQ 也会将其 和绑定使用的路由键进行匹配。 如果相匹配,消息将会投递到该队列。 如果不匹配,消息将会进入黑洞。

.8.Connection 。链接。指 rabbit 服务器和服务建立的 TCP 链接。

.9.Channel 信道。 1,Channel 中文叫做信道,是 TCP 里面的虚拟链接。例如:电缆相当于 TCP,信道是 一个独立光纤束,一条 TCP 连接上创建多条信道是没有问题的。 2,TCP 一旦打开,就会创建 AMQP 信道。 3,无论是发布消息、接收消息、订阅队列,这些动作都是通过信道完成的。

10.Virtual Host 。虚拟主机。表示一批交换器,消息队列和相关对象。虚拟主机是共享相同的身份认证 和加密环境的独立服务器域。每个 vhost 本质上就是一个 mini 版的 RabbitMQ 服务器,拥有 自己的队列、交换器、绑定和权限机制vhost AMQP 概念的基础,必须在链接时指定, RabbitMQ 默认的 vhost

11.Borker 。表示消息队列服务器实体。

 

 

 

​​​​​​​​​​​​​​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值