2017-09-20 3 views
0

우리는 RabbitMQ를 메시징 인프라로 사용하여 NserviceBus를 전송으로 사용하고 있습니다. 5. * 버전에서 NServiceBus 6.0으로 업그레이드하려고합니다. 5.0에서는 "Bus.Defer()"를 사용하여 이벤트를 연기 할 수 있습니다. 그러나 6.0 에서처럼 우리는 메시지 만 연기 할 수 있지만 이벤트는 연기 할 수 있습니까?NServiceBus 6.0에서 이벤트를 연기하는 방법은 무엇입니까?

"이벤트"라는 메시지와 함께 아래 코드를 사용하면 이벤트를 게시해야한다는 오류가 발생합니다.

 var sendOptions = new SendOptions(); 
     sendOptions.DoNotDeliverBefore(DateTimeOffset.Now.AddMinutes(30)); 
     sendOptions.RouteToThisEndpoint(); 
     return context.Send(message, sendOptions); 

하지만 context.Publish (메시지,() 새로운 PublishOptions) 방법을 연기 할 수있는 옵션이 없습니다 "PublishOptions"에 걸립니다.

여기에 뭔가가 있습니까? 누군가가 도울 수 있으면 감사하게 생각하십시오.

+0

를 호출하여 동일한을 달성 할 수있다. 행동을 연기해야한다면 명령이어야합니다. 문제의 범위를 넓히지 않으면 알기가 어렵습니다. 프로세스 관점에서 수행중인 작업에 대한 세부 정보를 추가 할 수 있습니까? –

+0

제품 데이터가 변경 될 때 이벤트를 게시하는 제품 제작 시스템이 있습니다. 우리는 가입자이고 제품 데이터가 변경되면 시스템을 업데이트해야합니다. 일부 변경 사항은 즉시 적용되지 않으므로 이러한 이벤트 중 일부를 연기해야합니다. 예를 들어, 이벤트는 다음과 같을 수 있습니다. 2017년 9월 22일 제품 업데이트 이벤트 또는 메시지 또는 명령은 항상 논쟁의 여지가있다,하지만 난 그것을 변경할 수 있다는 사실 메시지 또는 명령이 다른 문제를 일으키기 때문입니다. –

답변

0

나는 다른 포럼에서 답변을 얻었으며 이것이 가장 적절하다고 생각합니다. 그래서 미래에 누군가를 도울 수 있도록 여기에 게시하십시오. 덕분에 다니엘 마르 바흐

https://groups.google.com/forum/#!topic/particularsoftware/ivy1wdsycT8

Bus.Defer에 V5 내부적으로 항상 전송 작업을하고 있었다. v6과의 차이점은 자동으로 메시징 성공 사례를 사용 중지한다는 점입니다. 당신은 이벤트가 이미 당신이 연기해야 ​​할 작업을 발생하지 않도록 무언가를 기반으로

 var sendOptions = new SendOptions(); 
     sendOptions.DoNotDeliverBefore(DateTimeOffset.Now.AddMinutes(30)); 
     sendOptions.RouteToThisEndpoint(); 
     sendOptions.DoNotEnforceBestPractices(); 
     return context.Send(message, sendOptions); 

https://docs.particular.net/nservicebus/messaging/best-practice-enforcement

1

일부 변경 사항은 즉시 적용되지 않으므로 이러한 이벤트 중 일부를 연기해야합니다.

게시자는 구독자의 제약을받지 않아야합니다.

실제로 제품 발급 시스템이 ProductDataUpdate 이벤트를 게시한다고 가정하는 것이 맞습니까? 이 경우 인 결정에 대해 이미 통보를 받았습니다. 구독자로서 당신과 무엇을 할 것인가는 다른 일이며 전적으로 내부적입니다.

명령을 보낼 수 있습니다.이 토론에서는 UpdateProductCost이라고하며, 나중에 EffectiveDate 인 경우 지연된 메시지입니다. 그렇지 않으면 즉각적인 명령입니다.

+0

나는 당신과 동의한다, Sean, 당신은 절대적으로 옳다. NserviceBus가 시행하는 모범 사례를 따르도록 시간이 허락 될 때 실제로 그렇게 할 수 있습니다.하지만 지금은 빠른 대안을 찾고 있습니다. 귀하의 제안에 감사드립니다. –

관련 문제