1.简单队列(模式)
/**
* 1、队列名称
* 2、是否持久化
* 3、当前消息队列是否属于当前连接对象所有
* 4、在消息使用完后是否删除该消息
* 5、附加参数
*/
channel.queueDeclare("simlequere", true, false, false, null);
/**
* 1、消息要发送的交换机对象,不写 deafult
* 2、当前消息路由地址;简单消息模式,路由地址可以写成队列地址
* 3、附加消息
* 4、消息
*/
channel.basicPublish("","simlequere",null,message.getBytes());
2.work模式
一个生产者对应多个消费者,但是只能有一个消费者获得消息!!!
3.发布/订阅模式
一个消费者将消息首先发送到交换器,交换器绑定多个队列,然后被监听该队列的消费者所接收并消费.
/**
* 1、队列名称
* 2、是否持久化
* 3、当前消息队列是否属于当前连接对象所有
* 4、在消息使用完后是否删除该消息
* 5、附加参数
*/
channel.queueDeclare("fanout_quere_1", true, false, false, null);
channel.queueDeclare("fanout_quere_2", true, false, false, null);
/**
* 交换机
* 1、交换机名称
* 2、交换机类型
*/
channel.exchangeDeclare("fanout_exchage", BuiltinExchangeType.FANOUT);
/**
* 1、队列名称
* 2、交换机名称
* 3、routkey
*/
channel.queueBind("fanout_quere_1","fanout_exchage","");
channel.queueBind("fanout_quere_2","fanout_exchage","");
String message="hello word!";
/**
* 1、消息要发送的交换机对象,不写 deafult
* 2、当前消息路由地址;简单消息模式,路由地址可以写成队列地址
* 3、附加消息
* 4、消息
*/
channel.basicPublish("fanout_exchage","",null,message.getBytes());
4.路由模式
生产者将消息发送到direct交换器,在绑定队列和交换器的时候有一个路由key,生产者发送的消息会指定一个路由key,那么消息只会发送到相应key相同的队列,接着监听该队列的消费者消费信息
channel.exchangeDeclare("fanout_exchage", BuiltinExchangeType.FANOUT);
/** * 1、队列名称 * 2、交换机名称 * 3、routkey */
channel.queueBind("fanout_quere_1","fanout_exchage","key1");
channel.basicPublish("fanout_exchage","key1",null,message.getBytes());
5.主题模式
上面的路由模式是根据路由key进行完整的匹配(完全相等才发送消息),这里的通配符模式通俗的来讲就是模糊匹配.
符号"#"表示匹配一个或多个词,符号"*"表示匹配一个词.