2010-12-05 4 views
0

rabbitmq 여러 게시자 및 소비자의 동작을 알고 싶습니다. rabbitmq 서버는 한 번에 한 소비자에게 하나의 메시지를주고 다른 소비자들은 그 당시에 이상적입니까? 하나 개 이상의 소비자가 큐에서 메시지를 소비하고, 한 번에 있도록rabbitmq 여러 소비자 및 다중 게시자

또는

소비자는 큐에서 모든 무인 메시지를 선택?

기본적으로 데이터베이스 대기열을 설계 중이며 한 번에 두 개 이상의 삽입을 원하지 않습니다.

답변

0

대기열의 메시지는 한 명의 소비자에게만 전달됩니다. 즉, 메시지가 대기열로 이동하면 여러 소비자에게 복사 (브로드 캐스팅)되지 않습니다.

브로드 캐스트를 원하면 다중 대기열을 사용해야합니다. http://www.rabbitmq.com/tutorial-two-python.html

-1

예, RabitMQ 여러 출판사와 소비자를 지원합니다

더 자세한 내용은이 자습서를 참조하십시오.

  1. rabbitmqyou이 공장을 선언해야하고 rabbitmq 서버에 대한 연결을 할 수있는 messsge을 게시하기위한 여러 제작사

    . 는

    ConnectionFactory FACTORY = new ConnectionFactory 
    

    FACTORY.setUsername ("고객")

    FACTORY.setPassword ("고객")

    FACTORY.setVirtualHost ("\")

    을 rabbitmq하는있어 채널을 decare 공장 .setPort (5572)

    FACTORY.setHost ("localhost")

    연결 연결 = FACTORY.newConnection 채널 채널 = connection.createChannel

메시지가 행의 기본 키 라우팅

channel.basicPublish(EXCHANGE_NAME, "Queue1", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg1".getBytes) 

channel.basicPublish(EXCHANGE_NAME, "Queue2", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg2".getBytes) 

이 두 메시지

는 별도의 큐로에 게시됩니다 키 멀티에 대한 언급 queue1을하고 queue2

2.Multiple 소비자

로 라우팅 키 당 우리는 대기열을 선언하고 특정 라우팅 키에 바인딩합니다. 해당 라우팅 키에 대한 메시지는 존중 대기열에 게시됩니다. 이런

channel.exchangeDeclare(EXCHANGE_NAME, "direct", durable) 
    channel.queueDeclare("q1", durable, false, false, null) 
    channel queueBind ("q1", EXCHANGE_NAME,"queue1")// routing key = "queue1" 
    val q1Consumer = new QueueingConsumer(channel) 
    channel basicConsume ("q1", false, q1Consumer) 

u는 제 큐에서 메시지를 사용할 수 있으며, 동일한 제 큐 마찬가지지만 "queue2」

channel.exchangeDeclare(EXCHANGE_NAME, "direct", durable) 
     channel.queueDeclare("q2", durable, false, false, null) 
     channel queueBind ("q2", EXCHANGE_NAME,"queue2") // routing key = "queue2" 
     val q2Consumer = new QueueingConsumer(channel) 
     channel basicConsume ("q2", false, q2Consumer) 
로 라우팅 키를 지정
관련 문제