celery java_通过Java与Django / Celery互操作

小编典典

我找到了解决方案。RabbitMQ的Java库引用交换/队列/路由键。在Celery中,队列名称实际上是映射到Java库中引用的交换。默认情况下,芹菜的队列只是“芹菜”。如果您的Django设置使用以下语法定义了一个名为“

myqueue”的队列:

CELERY_ROUTES = {

'mypackage.myclass.runworker' : {'queue':'myqueue'},

}

然后,基于Java的代码需要执行以下操作:

ConnectionFactory factory = new ConnectionFactory();

Connection connection = null ;

try {

connection = factory.newConnection(mqHost, mqPort);

} catch (IOException ioe) {

log.error("Unable to create new MQ connection from factory.", ioe) ;

}

Channel channel = null ;

try {

channel = connection.createChannel();

} catch (IOException ioe) {

log.error("Unable to create new channel for MQ connection.", ioe) ;

}

try {

channel.queueDeclare("celery", false, false, false, true, null);

} catch (IOException ioe) {

log.error("Unable to declare queue for MQ channel.", ioe) ;

}

try {

channel.exchangeDeclare("myqueue", "direct") ;

} catch (IOException ioe) {

log.error("Unable to declare exchange for MQ channel.", ioe) ;

}

try {

channel.queueBind("celery", "myqueue", "myqueue") ;

} catch (IOException ioe) {

log.error("Unable to bind queue for channel.", ioe) ;

}

// Generate the message body as a string here.

try {

channel.basicPublish(mqExchange, mqRouteKey,

new AMQP.BasicProperties("application/json", "ASCII", null, null, null, null, null, null, null, null, null, "guest", null, null),

messageBody.getBytes("ASCII"));

} catch (IOException ioe) {

log.error("IOException encountered while trying to publish task via MQ.", ioe) ;

}

事实证明,这只是术语上的差异。

2020-10-20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django_celery_beat是一个django应用程序,它允许您使用celery定期运行周期性任务。这些周期性任务可以是一次性的或循环的,你可以设置它们在指定的时间间隔内自动运行,也可以设置它们在特定的时间运行。 要使用django_celery_beat,请按照以下步骤操作: 1. 安装django_celery_beat: ``` pip install django_celery_beat ``` 2. 在settings.py中添加以下代码: ``` INSTALLED_APPS = [ # ... 'django_celery_beat', ] CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' ``` 3. 在项目的urls.py文件中添加以下代码: ``` from django.urls import path from django_celery_beat.views import ( PeriodicTaskListView, PeriodicTaskCreateView, PeriodicTaskUpdateView, PeriodicTaskDeleteView, PeriodicTaskDetailView, ) urlpatterns = [ # ... path('celery/periodic-tasks/', PeriodicTaskListView.as_view(), name='periodic_task_list'), path('celery/periodic-task/add/', PeriodicTaskCreateView.as_view(), name='periodic_task_create'), path('celery/periodic-task/<int:pk>/', PeriodicTaskDetailView.as_view(), name='periodic_task_detail'), path('celery/periodic-task/<int:pk>/update/', PeriodicTaskUpdateView.as_view(), name='periodic_task_update'), path('celery/periodic-task/<int:pk>/delete/', PeriodicTaskDeleteView.as_view(), name='periodic_task_delete'), ] ``` 4. 在celery.py文件中添加以下代码: ``` from celery import Celery from django.conf import settings app = Celery('my_project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) ``` 5. 在tasks.py文件中创建您的任务,例如: ``` from celery import shared_task @shared_task def my_task(): # Do something here ``` 6. 创建周期性任务,您可以使用Django admin或创建它们的视图。 现在,您已经可以在django中使用celery定期运行周期性任务了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值