public MovilizerResponse PostMovilizerRequest(bool synchronousReponse = false, int numResponses = 1000, string requestTrackingKey = "")
{
this.Url = MovilizerWebServiceConstants.GetWebServiceUrl();
// create request object
MovilizerRequest request = this.ComposeRequest();
request.synchronousResponse = synchronousReponse;
request.numResponses = numResponses;
request.requestTrackingKey = requestTrackingKey;
string debugOutput = Configuration.GetDebugOutputPath();
if (!String.IsNullOrEmpty(debugOutput))
{
XmlHelper.SerializeToFile(debugOutput + "MovilizerRequest.xml", request);
}
// consume web service
MovilizerResponse response = null;
int countdown = 3;
while (response == null && countdown > 0)
{
try
{
countdown--;
response = Movilizer(request);
}
catch (Exception e)
{
LogFactory.WriteError(e.ToString());
if (countdown > 0)
{
// sleep for 10 seconds and try again
Thread.Sleep(10000);
}
else if (Configuration.ForceRequeingOnError())
{
// Requeue waiting message
LogFactory.WriteWarning("Error exceeded 3 consecutive retries, reqeuing messages for further processing.");
_moveletSets.AddRange(request.moveletSet);
_moveletAssignments.AddRange(request.moveletAssignment);
request.moveletDelete = _moveletDeletes.ToArray();
request.masterdataPoolUpdate = _masterdataPoolUpdate.ToArray();
request.moveletAssignmentDelete = _moveletDeleteAssignments.ToArray();
request.documentPoolUpdate = _documentPoolUpdate.ToArray();
request.participantReset = _ParticipantReset.ToArray();
}
}
}
if (response != null)
{
this.EnqueueResponse(response);
// log status messages
MovilizerStatusMessage[] statusMessages = response.statusMessage;
if (statusMessages != null)
{
foreach (MovilizerStatusMessage statusMessage in statusMessages)
{
LogFactory.WriteEntry(statusMessage);
}
}
// log movelet errors
MovilizerMoveletError[] moveletErrors = response.moveletError;
if (moveletErrors != null)
{
foreach (MovilizerMoveletError moveletError in moveletErrors)
{
LogFactory.WriteEntry(moveletError);
}
}
}
return response;
}