public SendResult SendMessageOrderly(IMessageBuilder builder, QueueSelectorCallback callback, int autoRetryTimes = 0, string args = "") { var message = builder.Build(); if (message.Handle == IntPtr.Zero) { throw new ArgumentException(nameof(builder)); } var argsPtr = Marshal.StringToBSTR(args); var result = ProducerWrap.SendMessageOrderly(this.Handle, message, callback, argsPtr, autoRetryTimes, out var sendResult); return(result == 0 ? new SendResult { SendStatus = sendResult.sendStatus, Offset = sendResult.offset, MessageId = sendResult.msgId } : null); }