RabbitMQ

创建连接

ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("host");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/virtualHosts");
connectionFactory.setUsername("username");
connectionFactory.setPassword("password");
Connection connection = connectionFactory.newConnection();

生产者

Channel channel = connection.createChannel();
/**
	声明队列,声明多个队列需要交换机(可以发送到交换机,在消费者声明队列)
	var1: 队列名称
	var2:是否持久化队列(RabbitMQ服务重启,消息保留
	var3:是否用户独立占用队列(其他用户访问不了该用户创建的消息 )
	var4:自动删除队列(队列没有被使用自动删除)
	var5:其他参数
*/
channel.queueDeclare(String var1, boolean var2, boolean var3, boolean var4, Map<String, Object> var5)

//多个队列要使用交换机
/**
	var1: 交换机名称
	var2:交换机类型 
		(FANOUT: 消息同时转发到绑定的每个队列; 
		DIRECT: 消息发送到交换机后,交换机通过路由key转发到队列;
		TOPIC: 可以用通配符的DIRECT,不能字符串直接拼接,要string.*
		)
*/
channel.exchangeDeclare(String var1, BuiltinExchangeType var2)

/**
	交换机通过路由key转发到队列,可以绑定多条(生产者发送到交换机时,在消费者再绑定队列)
	var1: 队列名称
	var2:交换机名称
	var3: 路由key,没有写""
*/
channel.queueBind(String var1, String var2, String var3);

//

/**
	给交换机发送消息
	var1: 交换机名称,使用默认交换机设置""
	var2:路由key,不是DIRECT模式时绑定队列,没有写"",可以多段*.*.*(*匹配一个,#匹配多个)
	var3:属性
	var4:消息内容
*/
channel.basicPublish(String var1, String var2, BasicProperties var3, byte[] var4)

channel.close(); 
connection.close();

消费者

同一个队列可以配置多个消费者,同一个消息只被一个消费者接收

Channel channel = connection.createChannel();
//同时只处理一条信息
channel.basicQos(1);
//定义处理方法
DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
	@Override
	public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
		//envelope可以获取交换机信息
		//body为消息内容
		//手动ACK
		channel.basicAck(envelope.getDeliveryTag(), false);
	}
};
        
/**
	消息监听
	var1: 队列名称
	var2:是否自动确认消息ACK(处理消息后自动清除消息)
	var3:绑定处理方法
*/        
channel.basicConsume(String var1, boolean var2, Consumer var3);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值