学习笔记:
生产者
import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; import java.util.concurrent.TimeoutException; public class Publish { //队列名称 private static final String QUEUE_INFORM_EMAIL="queue_inform_email"; private static final String QUEUE_INFORM_SMS="queue_inform_sms"; private static final String EXCHANGE_FANOUT_INFORM="exchange_fanout_inform"; public static void main(String[] args) throws IOException, TimeoutException { ConnectionFactory connectionFactory=new ConnectionFactory(); connectionFactory.setHost("127.0.0.1"); connectionFactory.setPort(5672); connectionFactory.setUsername("guest"); connectionFactory.setPassword("guest"); //设置虚拟机,一个mq服务可以设置多个虚拟机,每个虚拟机就相当于一个mq connectionFactory.setVirtualHost("/"); Connection connection=null; Channel channel=null; try { //建立连接 connection=connectionFactory.newConnection(); //创建会话通道,生产者和mq服务所有通信都在channel中完成 channel = connection.createChannel(); //声明队列 /** * String queue,boolean durable,boolean exclusive,boolean autoDelete ,Map<String,Object> arguments</String,Object> * 参数明细 * 1.队列名称 * 2:是否持久化,如果持久化,mq重启队列还在 * 3: exclusive :是否独占连接,队列只允许在该连接中访问,如果connection连接关闭队列自动删除。如果将此参数设置true可用于临时u队列的创建 * 4:autoDelete:自动删除,队列不再使用时是否删除队列,如果将此参数和exclusive参数设置为true就可以实现临时队列(队列不用了就自动删除) * 5:arguments 参数,可以设置一个队列的扩展参数,比如:可设置存活时间 */ channel.queueDeclare(QUEUE_INFORM_SMS,true,false,false,null); channel.queueDeclare(QUEUE_INFORM_EMAIL,true,false,false,null); //声明一个交换机 /** * String exchange,String type; * exchange :接交换机的名称 * type: 交换机的类型 * fanout: 对应的rabbitmq的工作模式是 publis/subscribe * direct: 对应的Routing工作模式 * topic: 对应于Topics工作模式 * headers: 对应于headers工作模式 */