package org.apache.activemq.book.ch2.jobs;
import javax.jms.Connection;
public class Producer {
private static String brokerURL = "tcp://localhost:61616";
private static transient ConnectionFactory factory;
private transient Connection connection;
private transient Session session;
private transient MessageProducer producer;
private static int count = 10;
private static int total;
private static int id = 1000000;
private String jobs[] = new String[]{"suspend", "delete"};
public Producer() throws JMSException {
factory = new ActiveMQConnectionFactory(brokerURL);
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
producer = session.createProducer(null);
}
public void close() throws JMSException {
if (connection != null) {
connection.close();
}
}
public static void main(String[] args) throws JMSException {
Producer producer = new Producer();
while (total < 1000) {
for (int i = 0; i < count; i++) {
producer.sendMessage();
}
total += count;
System.out.println("Sent '" + count + "' of '" + total + "' job messages");
try {
Thread.sleep(1000);
} catch (InterruptedException x) {
}
}
producer.close();
}
public void sendMessage() throws JMSException {
int idx = 0;
while (true) {
idx = (int)Math.round(jobs.length * Math.random());
if (idx < jobs.length) {
break;
}
}
String job = jobs[idx];
Destination destination = session.createQueue("JOBS." + job);
Message message = session.createObjectMessage(id++);
System.out.println("Sending: id: " + ((ObjectMessage)message).getObject() + " on queue: " + destination);
producer.send(destination, message);
}
}
package org.apache.activemq.book.ch2.jobs;
import javax.jms.Connection;
public class Consumer {
private static String brokerURL = "tcp://localhost:61616";
private static transient ConnectionFactory factory;
private transient Connection connection;
private transient Session session;
private String jobs[] = new String[]{"suspend", "delete"};
public Consumer() throws JMSException {
factory = new ActiveMQConnectionFactory(brokerURL);
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
}
public void close() throws JMSException {
if (connection != null) {
connection.close();
}
}
public static void main(String[] args) throws JMSException {
Consumer consumer = new Consumer();
for (String job : consumer.jobs) {
Destination destination = consumer.getSession().createQueue("JOBS." + job);
MessageConsumer messageConsumer = consumer.getSession().createConsumer(destination);
messageConsumer.setMessageListener(new Listener(job));
}
}
public Session getSession() {
return session;
}
}
package org.apache.activemq.book.ch2.jobs;
import javax.jms.Message;
public class Listener implements MessageListener {
private String job;
public Listener(String job) {
this.job = job;
}
public void onMessage(Message message) {
try {
//do something here
System.out.println(job + " id:" + ((ObjectMessage)message).getObject());
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
分布式调度XXL-Job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。XXL-Job占有率很高,是近几年大量流行的技术,可以作为公司内部培训技术分享必备知识。 知识点一:XXL-Job的...
XXL-JOB是一款轻量级分布式任务调度平台,它提供了简单易用的API接口和Web管理界面,使得开发者可以方便地实现任务的分布式调度。在本案例中,我们关注的是如何将XXL-JOB与达梦数据库(DM8)进行适配。达梦数据库...
ElasticJob是一个分布式调度解决方案,它基于Quartz和Zookeeper进行扩展,设计用于处理大规模分布式任务的调度问题。ElasticJob提供了两种产品,分别是ElasticJob-Lite和ElasticJob-Cloud。ElasticJob-Lite适用于对...
"SpringBoot2整合ElasticJob框架过程详解" 本文主要介绍了SpringBoot2整合ElasticJob框架的过程详解,从ElasticJob的简介、基础框架结构、分片管理、个性化参数到定时任务加载、核心依赖包、核心配置文件、自定义...
### ORACLE如何停止一个JOB:深入解析与实践 在Oracle数据库管理中,有时我们需要停止正在运行的JOB,这可能是由于各种原因,如发现错误、优化性能或调整资源分配。本文将详细阐述如何在Oracle中查询并停止正在运行...
"JobHandler调度器"是一种广泛应用于分布式任务调度的框架,主要设计用于处理大规模并发和定时任务的场景。在这个系统中,JobHandler是核心组件,它负责执行具体的业务逻辑。下面我们将详细探讨JobHandler调度器的...
标题中的“传参数给job及job状态学习”指的是在使用Quartz Scheduler进行任务调度时,如何传递参数给Job以及理解Job的状态管理。Quartz Scheduler是一个开源的Java作业调度框架,它允许程序创建、安排和执行重复的...
"XXL-JOB分布式任务调度系统培训PPT" XXL-JOB分布式任务调度系统是当前 Java 生态中的一种流行的分布式任务调度系统。它提供了多种功能特性,如支持 cron 表达式、支持多种任务类型、支持任务优先级、支持任务依赖...
XXL-JOB是一个分布式任务调度平台,其2.2.0版本包含了大量的功能改进和优化。这个源码压缩包提供了一个深入理解XXL-JOB工作原理的机会,对于开发者来说是宝贵的资源,尤其对于那些需要自定义扩展或者进行二次开发的...
XXL-JOB是一款轻量级分布式任务调度平台,它提供了简单易用的Web管理界面,支持灵活的任务配置和丰富的调度策略。在这个“xxl-job oracle 适配版本”中,我们主要关注的是XXL-JOB如何与Oracle数据库进行集成和优化。...
XXL-JOB是一款分布式任务调度平台,主要特点在于其易用性、灵活性和扩展性,使得在企业级应用中管理定时任务变得简单。本压缩包文件"xxl-job-mine"可能包含了与XXL-JOB相关的本地配置和示例代码,帮助用户在本地环境...
【xxl-job整合mybatis、mysql与springboot详解】 XXL-JOB是一个分布式任务调度平台,设计目标是轻量级、易用性好且扩展性强。它提供了Web控制台进行任务管理和执行,支持多种调度触发策略,如定时、依赖、手动触发...
分布式调度任务XXL-JOB架构图知识点 分布式调度任务XXL-JOB架构图是一种基于quartz调度器的分布式任务调度框架,旨在解决大规模任务的调度和执行问题。下面是该架构图中的关键知识点: 1. 分布式调度中心:XXL-JOB...
### 将xxl-job-admin、xxl-job-core、xxl-job-executor的源码引入项目中的实践 在探讨如何将这三个组件(xxl-job-admin、xxl-job-core、xxl-job-executor)有效地引入到项目中之前,我们需要先了解它们各自的作用及...
**xxl-job集成springboot实战代码** 在现代的微服务架构中,定时任务扮演着重要的角色,它们可以用于数据同步、报表生成、缓存更新等场景。`xxl-job`是一个分布式任务调度平台,它提供了易用的界面操作、稳定高效的...
XXL-JOB是一款开源的分布式任务调度平台,其2.3.0版本提供了丰富的功能,旨在帮助开发者实现灵活、高效的任务调度。这个压缩包“xxl-job-2.3.0.zip”包含了XXL-JOB的源代码、配置文件、文档和其他相关资源,让我们...
ElasticJob是一个由当当网开源的分布式任务调度框架,它基于阿里巴巴的Quartz Scheduler进行了扩展,旨在解决在分布式环境下,复杂任务调度的问题。ElasticJob主要分为两个部分:ElasticJob-Lite和ElasticJob-Cloud...
Elastic-Job是一个分布式任务调度框架,由两个子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite是轻量级的解决方案,适合在私有云或物理服务器集群上使用;而Elastic-Job-Cloud则基于Mesos框架,更...
XXL-JOB是一款开源的任务调度框架,由xuxueli开发,主要应用于分布式系统中的任务调度。金仓数据库,又称为Kingbase,是中国自主研发的一款高性能、高可用的关系型数据库管理系统,常用于对数据处理性能有较高要求的...
赠送jar包:xxl-job-core-2.3.0.jar 赠送原API文档:xxl-job-core-2.3.0-javadoc.jar 赠送源代码:xxl-job-core-2.3.0-sources.jar 包含翻译后的API文档:xxl-job-core-2.3.0-javadoc-API文档-中文(简体)版.zip ...