RabbitMQ da chave roteamento correspondência difusa

prefácio

chave de roteamento correspondência difusa

Que é que você pode usar expressões regulares, e usado regularmente representa um tipo diferente, então onde "#" representa tudo, todo o sentido; "*" corresponde apenas a uma palavra. Exemplos será capaz de compreender a leitura.

Exemplos de funções algo como isto:

Por exemplo, você tem um amigo íntimo, seja feliz, triste, no trabalho ou na vida as coisas podem ser e ela disse, existem alguns amigos para coisa divertida ação; existem alguns amigos, você pode colocar as coisas infelizes e ela disse.

encaminhamento de chaves

roteiros = [ 'happy.work', 'happy.life', 'happy.work.teacher', 'sad.work', 'sad.life', 'sad.work.teacher']

"#": Jogos todas as rotas principais

"Feliz #": 匹配 'happy.work', 'happy.life', 'happy.work.teacher'

"O trabalho #": No jogo

"* Happy.": Match 'happy.work', 'happy.life'

"* .Trabalhos": match 'happy.work', 'sad.work'

"* .Trabalhos #.": 匹配 'happy.work', 'happy.work.teacher', 'sad.work', 'sad.work.teacher' 

código

o remetente

Importar o PIKA 

hostname = ' 127.0.0.1 ' 
Parâmetros = pika.ConnectionParameters (hostname) 
Connection = pika.BlockingConnection (Parâmetros) 

# Criar Canal 
Canal = connection.channel ()
 # definir o switch, para definir o tipo Topic 
channel.exchange_declare (= Troca ' test_queue_topic 'exchange_type = ' Tema ' ) 

# definir três chaves de roteamento 
roteiros = [ ' happy.work ' ' happy.life ' ' sad.work' ' Sad.life ' ] 

# mensagens sequencialmente transmitidos para o switch, e definir as chaves de roteamento 
para roteamento em Roteiros: 
    Mensagem = ' . Mensagem S% ' % roteamento 
    channel.basic_publish (Exchange = ' test_queue_topic ' , = roteamento routing_key, corpo = Mensagem)
     Imprimir (Message) 

Connection.Close ()

recebendo final

Import SYS, o PIKA 

hostname = ' 127.0.0.1 ' 
Parâmetros = pika.ConnectionParameters (hostname) 
Connection = pika.BlockingConnection (Parâmetros) 

# Criar Canal 
Canal = connection.channel ()
 # definir o switch, para definir o tipo Topic 
channel.exchange_declare (Exchange = ' test_queue_topic ' , exchange_type = ' Tema ' ) 

# obter chaves de roteamento dos parâmetros de linha de comando, e se não, conjunto de informações 
roteiros do sys.argv = [1. :]
 IF  não roteiros: 
    roteiros = [ 'Info ' ] 

# gerar uma fila temporária, 
o Resultado = channel.queue_declare (Fila = ' test_queue_topic ' , exclusivo = True)   # exclusivo = True Sair quando a fim de receber essa fila será destruído temporariamente criado 
queue_name = result.method.queue 

para roteamento em roteiros:
     # ligado ao switch, chaves de roteamento fornecido 
    channel.queue_bind (Exchange = ' test_queue_topic ' , Queue queue_name =, = routing_key roteamento) 


DEF a chamada de retorno (CH, Método, Propriedades, corpo):
     Imprimir ( " [X] Recebeu I & lt% " % (corpo,))


channel.basic_consume ( 
    Queue = ' test_queue_topic ' ,   # especifique o nome da fila 
    on_message_callback = o retorno de chamada,   # receber mensagens da fila 
    auto_ack = false   # MQ servidor trava tarefa de prevenção de perda 
) 

Imprimir ( ' [*] espera para mensagens. Pressione Sair o Para o CTRL C + ' ) 
channel.start_consuming ()

Testes código

 o remetente

 recebendo final

trabalhos

 feliz

 tudo

 

Acho que você gosta

Origin www.cnblogs.com/SR-Program/p/12623560.html
Recomendado
Clasificación