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