가입 엔드 포인트에서 실패 할 가능성이 있으며 재 시도가이를 처리 할 수 있습니까? 재 시도 시간/지연을 미세 조정하여 메시지가 재 시도되기 전에 보조 데이터베이스가 갱신되도록 할 수 있습니다.
데이터베이스에서 데이터를 조회하는 가장 좋은 방법과 이벤트 버전을 구별하는 방법을 찾아야합니다. 업데이트의 경우 버전 번호 또는 마지막 업데이트 날짜를 사용하거나 생성시 식별자로 조회 만 할 수 있습니다. 보조 데이터베이스 오프
엔드 포인트 데이터를 읽는이 같은 이벤트 핸들러가있을 수 있습니다 : 당신은 이벤트 처리기가 다시 시도 얼마나 지연 각 시도 사이에있을거야 얼마나 많은 시간을 제어 할 수 있습니다
public class CustomerCreationHandler : IHandlesMessage<CustomerCreated>
{
public void Handle(CustomerCreated @event)
{
var customer = Database.Load(@event.CustomerId);
if(customer == null)
{
throw new CustomerNotFoundException("Customer was not found.");
}
//Your business logic goes here
}
}
. 이 경우 메시지는 1 수준 재 시도에 의해 재 시도되고 아래에 구성된 2 단계 재 시도에 전달됩니다.
class ProvideConfiguration :
IProvideConfiguration<SecondLevelRetriesConfig>
{
public SecondLevelRetriesConfig GetConfiguration()
{
return new SecondLevelRetriesConfig
{
Enabled = true,
NumberOfRetries = 2,
TimeIncrease = TimeSpan.FromSeconds(10)
};
}
}
또는 대신 이벤트를 게시, 당신은 일정 시간이 경과 한 후 다음 실제 이벤트를 게시하는 같은 엔드 포인트에 연기 된 메시지를 보낼 수 있습니다.