Example #1
0
        /// <summary>
        /// 同步发送消息
        /// </summary>
        /// <param name="builder"></param>
        /// <returns></returns>

        public SendResult SendMessageSync(HandleRef message)
        {
            if (message.Handle == IntPtr.Zero)
            {
                throw new ArgumentException(nameof(message));
            }

            try
            {
                CSendResult sendResultStruct = new CSendResult();
                var         result           = ProducerWrap.SendMessageSync(this._handleRef, message, ref sendResultStruct);
                if (result != 0)
                {
                    throw new RocketMQProducerException($"set producer sendMessageTimeout error. cpp sdk return code: {result}");
                }
                return(result == 0
                ? new SendResult
                {
                    SendStatus = sendResultStruct.sendStatus,
                    Offset = sendResultStruct.offset,
                    MessageId = sendResultStruct.msgId
                }
                : null);
            }
            catch (Exception e) {
                throw new Exception(e.Message);
            }
        }
Example #2
0
 public static extern int SendMessageOrderly(
     HandleRef producer,
     HandleRef message,
     [MarshalAs(UnmanagedType.FunctionPtr)]
     QueueSelectorCallback callback,
     IntPtr arg,
     int autoRetryTimes,
     [Out]
     out CSendResult result
     );
Example #3
0
 public static extern int SendMessageSync(HandleRef producer, HandleRef message, ref CSendResult result);