public T Take()
        {
            var request = TransactionalQueueTakeCodec.EncodeRequest(Name, GetTransactionId(), GetThreadId());
            var result  = Invoke(request, m => TransactionalQueueTakeCodec.DecodeResponse(m).Response);

            return(ToObject <T>(result));
        }
        public async Task <TItem> TakeAsync()
        {
            var requestMessage  = TransactionalQueueTakeCodec.EncodeRequest(Name, TransactionId, ContextId);
            var responseMessage = await Cluster.Messaging.SendToMemberAsync(requestMessage, TransactionClientConnection).CfAwait();

            var response = TransactionalQueueTakeCodec.DecodeResponse(responseMessage).Response;

            return(ToObject <TItem>(response));
        }