Я пытаюсь отправить JSON в Rabbitmq. это мой продюсер, и он работает правильно:
import pika
import json
credentials = pika.PlainCredentials('admin', '123')
parameters = pika.ConnectionParameters('192.168.1.11',
5672,
'/',
credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue='myapp')
message = {'fname': 'test', 'lname': 'test'}
channel.basic_publish(exchange='',
routing_key='myapp',
body=json.dumps(message),
properties=pika.BasicProperties(
delivery_mode = 2,
))
print(" [x] Sent %r" % message)
connection.close()
Это приемник, и это не нормально:
import pika
import time
import json
credentials = pika.PlainCredentials('admin', '123')
parameters = pika.ConnectionParameters('192.168.1.12',
5672,
'/',
credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue='myapp')
def callback(ch, method, properties, body):
myjson = json.loads(body)
global fname
global lname
fname = myjson["fname"]
lname = myjson["lname"]
my_func(fname,lname)
channel.basic_qos(prefetch_count=1)
channel.basic_consume(queue='myapp',
auto_ack=True,
on_message_callback=callback)
channel.start_consuming()
def my_func(fname,lname):
pass
когда я запускаю скрипты, получатель показывает следующую проблему:
NameError: глобальное имя 'my_fun c' не определено