rabbitMQ 학습노트 (5) 메시지 라우팅
기본 Exchange로 메시지를 보내지 않고 우리가 정의한 Exchange로 메시지를 보내면 다음 방법의 두 번째 인자는QueueName이 아니라 메시지의 형식입니다.
channel.basicPublish( exchangeName , messageType , null , msg.getBytes());
예: Sender05.java
package com.zf.rabbitmq05;
import java.io.IOException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
/**
*
* @author zhoufeng
*
*/
public class Sender05 {
public static void main(String[] args) throws IOException {
ConnectionFactory connFac = new ConnectionFactory() ;
//RabbitMQ-Server , 127.0.0.1
connFac.setHost("127.0.0.1");
//
Connection conn = connFac.newConnection() ;
//
Channel channel = conn.createChannel() ;
String exchangeName = "exchange02";
String messageType = "type01";
channel.exchangeDeclare(exchangeName, "direct") ;
// Queue
String msg = "Hello World!";
//
channel.basicPublish( exchangeName , messageType , null , msg.getBytes());
System.out.println("send message[" + msg + "] to "+ exchangeName +" success!");
channel.close();
conn.close();
}
}
package com.zf.rabbitmq05;
import java.io.IOException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException;
/**
*
* @author zhoufeng
*
*/
public class Recv05_01 {
public static void main(String[] args) throws IOException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {
ConnectionFactory connFac = new ConnectionFactory() ;
connFac.setHost("127.0.0.1");
Connection conn = connFac.newConnection() ;
Channel channel = conn.createChannel() ;
String exchangeName = "exchange02";
channel.exchangeDeclare(exchangeName, "direct") ;
String queueName = channel.queueDeclare().getQueue() ;
// type, type01 。
channel.queueBind(queueName, exchangeName, "type01") ;
// 。
channel.queueBind(queueName, exchangeName, "type02") ;
//
QueueingConsumer consumer = new QueueingConsumer(channel) ;
channel.basicConsume(queueName, true, consumer) ;
//
while(true){
// , ,
Delivery delivery = consumer.nextDelivery() ;
String msg = new String(delivery.getBody()) ;
System.out.println("received message[" + msg + "] from " + exchangeName);
}
}
}
이때 Recv05_ 시작01.java 그리고 Sender05를 시작합니다.자바, 소비자측에서 메시지를 받을 수 있습니다.
그리고 Sender05.자바의messageType는 각각 type02 type03로 바뀌어 메시지를 보내면 소비자측에서 type02의 메시지를 받을 수 있지만 type03의 메시지를 받을 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.