O gRPC pode fazer solicitações assíncronas, mas ainda é um padrão de RPC e, portanto, é principalmente para quando você não se importa com a resposta, não para implementar sistemas de mensagem (sub / pub).
O que eu faço é, se eu precisar de RPC, eu uso gRPC para comunicação e ProtocolBuffers para serializar os dados, e quando eu precisar de mensagens eu uso o AMQP, também com ProtocolBuffers.
Faz sentido ter o gRPC armazenando em buffer os dados por meio de um sistema de mensagens se você precisar escaloná-los, ter roteamento entre servidores ou se desejar recursos como mensagens off-line e também notificação de recebimento de mensagens.
Meu conselho é diagramar os cenários de comunicação no papel, e deve ficar claro qual tipo de serviço você precisa.
Além disso, observe que o uso de gRPC é principalmente turn-key e o AMQP não é; geralmente sistemas de mensagens exigirão que você escreva muito código. Se você não está realmente escalando muito, então pode ser uma quantidade excessiva de trabalho. Além disso, acho que é raro você querer os dois; o padrão RPC é principalmente um subconjunto do padrão de mensagens. Se você for superar o RPC, use as mensagens do IMO inicial.