2014-10-18 6 views
1

모두! 전문가의 조언이 필요합니다. 시나리오를 가지고 있고 .NET WebForms UI 응용 프로그램이 일부 비즈니스 프로세스가 (일부 사용자 입력에 따라) 트리거되어 제대로 수행되지 않습니다. 현재의 솔루션은 MS SQL 서버 기반입니다. 이러한 비즈니스 프로세스 중 일부는 비동기 적으로로드 및 처리 될 수 있으므로 사용자는 기다려야 할 필요가 없으며 더 나은 UI 경험을 가질 수 있습니다. 하지만 비즈니스 프로세스가 처리되도록 확신해야합니다. 솔루션으로, 나는 비동기 프로세스를 트리거하는 응용 프로그램에 메시징 시스템의 일종의 도입을 생각하고 있습니다. 비즈니스 사용자와의 많은 논쟁 끝에 메시징 시스템의 기준 중 하나는 안정성입니다. 메시지는 결코 손실되지 않아야합니다. (인프라 및 유지 관리 가능성은 두 번째 것입니다.) 따라서 내 질문 사항은 다음과 같습니다.기업용 메시징 및 현실성

응용 프로그램 내부 메시징에 권장하는 저렴한, 안정적이며 분산 트랜잭션을 포함하지 않는 메시징 시스템/플랫폼은 무엇입니까?

지금 SQL Service Broker의 사용을 고려하고 있습니다. 더 좋은 대안이 있습니까? 메시지를 잃지 않을 정도로 신뢰할 만합니까?

SQL Server를 기반으로하는 자체 메시징 시스템을 구축해야합니까?

모든 권장 사항에 크게 감사드립니다. 감사합니다.

+2

확실한 답변이 없으므로 질문이 닫힐 수 있습니다. 그러나 서비스 버스를 고려할 수 있습니다. 내 대답보기 : http://stackoverflow.com/questions/25953891/why-do-we-need-service-bus-frameworks-like-nservice-bus-masstransit-on-top-of-me/25957608#25957608 --- 당신을 위해 무엇이 효과가 있는지보기 위해 부부를 평가할 필요가 있습니다. –

답변

2

RabbitMQ는 당신이 찾고있는 것을 정확하게 처리 할 수있는 매우 유명한 오픈 소스 메시징 프레임 워크입니다. 저의 팀은이 같은 주제에 대해 많은 연구를 해 왔으며 msmq 및/또는 zeroMQ와 같은 다른 메시징 프레임 워크보다 rabbitmq를 선택했습니다.

"비동기 메시징"세계에서 찾고있는 메시징 유형에 대한 용어는 "내구성있는 메시징"이며 rabbitmq가이를 잘 처리합니다.

내구성있는 메시징이란 메시지를 대기열로 보낼 때 디스크에도 지속된다는 것을 의미합니다. 지속성 외에도 메시지 소비자는 처리가 성공적으로 완료되었음을 확인하기 전까지 대기열에서 메시지를 제거하지 않습니다. 이것은 당신이 결코 메시지를 잃지 않을 것이라는 점을 보증합니다!

튼튼한 메시지는 당신이 찾고있는 것이고, 당신이 바라는 모든 것이 RabbitMQ에 의해 잘 처리 될 수 있습니다.

어떤 사람들은 "서비스 버스"의 사용에 대해 언급 할 수 있습니다. 그 용어를 조심하십시오. 대부분의 사람들은 그 용어가 의미하는 바에 대한 다양한 믿음을 가지고 있으며 심지어 "서비스 버스"의 공급 업체도 개념을 서로 다르게 정의합니다. 그러나 두 가지 서비스 버스 제품이 있습니다. 귀하의 경우에 대해 알고 싶을 것입니다. MassTransit과 NServiceBus입니다. 이 두 가지는 RabbitMQ 및/또는 msmq 위에 빌드 된 코드 추상화입니다. 간단히 말해서, 이들은 rabbitmq의 코딩을 용이하게하는 데 사용되며 다른 사람들이 소리를 낼 수 있기 때문에 rabbitMQ 또는 다른 대기열 전송을 대신 할 수 없습니다 (rabbitmq 또는 msmq를 통한 셸처럼 생각할 수 있음). 응용 프로그램에서 비동기 메시징을 많이 사용하려는 경우에만 해당 제품 중 하나를 사용하는 것이 좋을 것입니다. 그렇지 않으면 베어 본 (Bare-Bones) RabbitMQ를 사용할 수 있으며 괜찮을 것입니다.