RabbitMQ 基於RPC實現

2022-02-10 23:20:09 字數 550 閱讀 5759

對於使用rabbitmq執行command的情況,有時候需要有返回值資訊。此時相當於client發布乙個command後,並偵聽返回結果的queue,server接收並處理,將處理結果發布到client偵聽的queue中。簡單實現如下:

1. client端

private static void rpcresponse()

catch (exception ex)}}

}}

}

2. server端

public static void sendcommand_direct()

", message));

basicgetresult res = channel.basicget("q2", false/*noack*/);//從q2中獲取返回結果

if (res != null)

catch (exception ex)}}

}}

catch (exception ex)

thread.sleep(3000);

}}

基於protobuf的RPC實現

可以對照使用google protobuf rpc實現echo service一文看,細節本文不再描述。google protobuf只負責訊息的打包和解包,並不包含rpc的實現,但其包含了rpc的定義。假設有下面的rpc定義 service myservice 那麼要實現這個rpc需要最少做哪些事...

實現基於springboot的RPC框架(序)

rpc框架大家或多或少都用過,出自於阿里系的就有dubbo,hsf,sofarpc等。但是,要深入理解rpc的原理卻不容易,其中光是核心部分,就涉及到動態 netty,服務註冊與發現,序列化,多執行緒等等。筆者為了弄清楚rpc框架的大致呼叫實現原理,自己造了個輪子 zrpc.首先,筆者寫這個rpc框...

基於 rabbitmq 實現的延時佇列

雖然 rabbitmq 沒有延時佇列的功能,但是稍微變動一下也是可以實現的 存在乙個倒計時機制 time to live ttl 當到達時間點的時候會觸發乙個傳送訊息的事件 dead letter exchanges dlx 基於第一點,我利用的是訊息存在過期時間這一特性,訊息一旦過期就會變成dea...