0

저는 Azure Service Bus 위에서 실행되는 메시징 프레임 워크로 MassTransit을 사용하고 있습니다. 저는 WebJob 내부에서 MassTransit을 실행하고 있습니다. (중요하지 않다고 생각 하긴하지만)MassTransit 및 MaxConcurrentCalls가 예상대로 작동하지 않습니까?

이제는 MassTransit에서 동시에 여러 메시지를 처리하려고합니다. 이제는 개별적으로 메시지를 처리하고 있습니다. 처리하는 데 시간이 걸린다. 따라서 성능을 높이기 위해 각 메시지를 하나씩 처리하는 것을 원하지 않습니다.

MaxConcurrentCalls를 예를 들어 30으로 설정하려고했지만 그럴 수 없습니다. 메시지는 여전히 내 소비자에 의해 하나씩 선택됩니다.

또한 PrefetchCount를 5 등으로 설정하려고했지만 아무 것도 변경하지 않았습니다.

내가 뭘 잘못하고 있니? 어떤 도움도 크게 받으실 수 있습니다.

답변

0

그래서 MassTransit-Benchmark를 사용하여 몇 가지 테스트를 수행했으며, MassTransit 3.4.1을 사용하여 Azure 서비스 버스로 많은 동시 소비자를 실행할 수있었습니다.

Azure가 빠르지 않으므로 소비자가 거의 아무것도하지 않으면 (몇 밀리 초 만에 완료), 메시지 전달이 서비스 버스와 얼마나 불충분한지. 70 ~ 80 명의 동시 사용자를 확보하기 위해 소비자에게 3ms의 지연을 추가해야했습니다. 지체없이 2 ~ 3 명의 동시 소비자가 앉아 있었다.

따라서 일부 설정을 조정하는 것이 좋습니다. 또한 호스트에서 설정할 수있는 배치 시간 초과가 있습니다.이 시간 초과는 작은 메시지 일 수있는 경우 10ms 미만, 심지어 5ms 미만으로 줄일 경우 도움이됩니다. 더 높은 prefetch count도 도움이됩니다.

관련 문제