Azure 서비스 버스 기능을 사용하려고합니다. 응용 프로그램을 다른 환경 (dev, test, staging 등)에 배포했습니다. 내가 본 것에서 버스 당 하나의 메시지 유형 만 가질 수 있습니까? 각 환경을 지원하려면 서비스 버스의 개별 인스턴스가 필요합니까? Masstransit을 사용하고 있으며 표준 버전의 서비스가 필요하기 때문에 매월 인스턴스마다 상당한 비용을 지불해야합니다. 해결 방법이 있습니까? 내 유일한 옵션 대신 RabbitMQ를 사용하고 있습니까?Azure 서비스 버스에서 동일한 유형의 메시지가 여러 개 있습니다.
0
A
답변
1
여기 여러 항목을 혼합하는 것처럼 보입니다. 보다 구체적으로 - MassTransit 토폴로지 및 Azure 서비스 버스 서비스. 복수의 환경 (예 : test
및 prod
)의 엔드 포인트를 동일한 Azure Servie Bus 네임 스페이스에 배포하는 경우 MassTransit이 test
및 prod
에 대해 엔드 포인트에 필요한 것과 동일한 엔티티를 사용하므로 분명히 충돌합니다.
대신에 환경마다 네임 스페이스를 사용해야합니다. 나는. 2 개의 네임 스페이스를 만듭니다 (예 : project-test.servicebus.windows.net
및 project-prod.servicebus.windows.net
). 이렇게하면 동일한 엔티티를 만들 수있는 동일한 MassTransit 끝점을 배포 할 수 있지만 네임 스페이스별로 분리됩니다.
표준 계층에서 서비스 사용에 대한 월 사용료 (그리고 모든 메시지 트랜잭션, 명확하게하기 위해)를 지불해야합니다. 생성하려는 네임 스페이스의 수가 아닙니다.
+0
설명 해 주셔서 감사합니다. – Bartosz
'버스 당 하나의 메시지 유형 만 가질 수 있습니다.'라는 말의 의미를 자세히 설명하십시오. –
서비스 버스 자체에는 이러한 제한 사항이 없습니다. 동일한 큐에 다른 메시지를 보내고 동일한 네임 스페이스에있는 다른 환경의 큐를 가질 수 있습니다. 그것이 좋은지 여부는 시나리오에 따라 다릅니다. 대중 교통이 허용하는지 모르겠습니다. – Mikhail
@ Gaurav Mantri 내가 의미하는 바는 모든 환경, 즉 NotifyMessage에서 메시지에 대해 하나의 동일한 클래스가 있다는 것입니다. 나는 각 환경에 대한 서비스 버스에서 엔드 포인트를 분리했다면 충분하다고 생각했지만 분명히 이것은 서비스 버스의 라우팅이 작동하는 방식이 아닐까? – Bartosz