2016-08-12 1 views
0

많은 메시지를받는 브로커가 있으며 우리는 이러한 메시지를 사용하기 위해 Windows 서비스를 사용하려고합니다.ActiveMQ with C#

Windows 서비스에는 이러한 메시지를 수신하는 작업과 메시지 처리를위한 약 50-70 개의 작업이 포함됩니다. 우리가 제 3 자 요소의 한계를 가지고 있기 때문에 소비 작업의 수는 제한되어야합니다. 그러나 우리는 확장을 위해 여러 Windows 서비스 프로세스를 실행합니다.

ActiveMQ .NET 공급자는 새 메시지에 대한 이벤트를 제공하기 만합니다.

Producer에서 Consumer까지 메시지를 전달할 때이 시나리오에서 가장 좋은 방법은 무엇입니까? ActiveMQ에서 새 메시지를 수신하는 경우 ProducerConsumer이 새 메시지를 처리 ​​할 준비가 될 때까지 기다려야합니다.

우리는 일종의 LimitedQueue를 써야합니까, 아니면 TPL에 내장 된 것이 있습니까? 큐에 어떤 메시지가 모든 작업이 아닌 통화를 기다릴 경우 이제 작업이

foreach(var message in queue.GetConsumingEnumerable()) 

으로 메시지를 소비 할 수

BlockingQueue<YourMessage> queue = new BlockingCollection<YourMessage>(1); 

을 :

답변

0

난 당신이 boundedCapacity 1 여기 BlockingCollection를 사용할 수 있다고 생각 .

Addqueue에 새 항목을 저장할 공간이있을 때까지 차단됩니다. 메시지를 추가 할 시간 초과를 사용하려면 TryAdd을 사용하십시오.