Almost every application has tasks or jobs that are better suited to the background, and cbqmakes it easier and traceable to manage those jobs. cbq can scale from simple background tasks to a database to any message queue provider. Come learn how to get started with background tasks in your application.
Report
Share
Report
Share
1 of 96
Download to read offline
More Related Content
Similar to cbq - Jobs and Tasks in the Background by Ortus
Docker Java App with MariaDB – Deployment in Less than a Minutedchq
The document summarizes how DCHQ can automate the deployment of a Java-based Pizza Shop application on Docker containers across different application servers and databases. It describes how DCHQ templates can be used to build and deploy the application using Nginx, Tomcat, and MariaDB as well as Nginx, Jetty, and MariaDB. DCHQ then provisions the underlying infrastructure on Rackspace, deploys the applications, enables monitoring and continuous delivery from Jenkins, and allows auto-scaling of the application server clusters.
The document provides an overview of the Microservice Bus (MSB) which provides a communication infrastructure to support microservice architecture. Key components of MSB include service registration using a registry like Consul, client-side and server-side service discovery, and API gateways. MSB also includes tools like the Kube2MSB registrator to automatically register services deployed on Kubernetes. Examples are provided for running MSB without and within the ONAP Operations Manager (OOM). The future vision is presented of integrating service mesh technologies into the ONAP Microservice Architecture (OMSA) for carrier-grade microservices.
2016년 12월에 진행되었던 W3C HTML5 Conference 2016의 오후 트렉 (웹프레임워크)의 발표 자료입니다.
GDG Korea Web Tech 운영진이신 한장현 님께서 ‘AngularJS와 ES6’에 대한 주제로 발표를 진행하였습니다. 이 발표를 통해서 Angular와ES6를 함께 사용하기 위해 필요한 구체적인 내용들을 공유하��습니다. Angular를 현재 사용하시는 분들께 많은 도움이 되는 시간이었던 것 같습니다.
The document provides biographical information about Janghyun Han in Korean. It includes his email address, blog, work experience at SamsungSDS developing TV and retail solutions, current work as a freelance developer, book he is writing translating Angular 2, and involvement with GDG Korea Web Tech.
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015Chef
Find out how to create automated infrastructure deployments using versioned Infrastructure as Code - CloudFormation templates on AWS. This talk will walk through two example CloudFormation templates. The first template will show how to use CloudFormation via AWS cli commands to create a Chef Server 12 instance and have it upload it’s client validation pem into private S3 bucket also created by the template. The second template will show how to use CloudFormation to create multiple client node instances in AWS EC2 and have them automatically bootstrap into the new Chef 12 Server instance. Links will be provided to the CloudFormation template code used for the demo for example purposes.
https://youtu.be/WXLDdGxfEsI
This document provides information on building skills for Alexa using APIs and ColdBox frameworks. It discusses setting up Amazon developer accounts and AWS services accounts. It also covers creating Lambda functions in Node.js to call APIs from Alexa skills and building ColdBox REST APIs to interface with Alexa skills. The document includes code snippets for sample Lambda functions and ColdBox handlers to integrate with Alexa skills.
Slides from my talk on #ruby-mg meeting.
Intro about how we in catars.me are using postgREST to create fast and simple API that can be represented with various mithril.js components.
OSGi Overview provides information on OSGi, its benefits, and how it works. Key points include:
- OSGi allows developing modular Java programs through bundles that declare dependencies. Each bundle dynamically loads classes.
- In Liferay, bundles become portlets, services, or extensions. The blade CLI helps create these.
- Portlets can be implemented as MVC portlets or use configuration and portlet provider templates.
- Services can be created with Service Builder or wrapped. OSGi services can also be registered.
- Liferay modules can be extended through fragments to customize JSPs, properties, add filters or events.
How To Configure Nginx Load Balancer on CentOS 7VCP Muthukrishna
This document provides instructions on how to configure Nginx as a load balancer on CentOS 7. It describes installing Nginx, configuring two web servers and a load balancer node, setting up the load balancing configuration in the Nginx configuration file, and testing the load balancer functionality using curl commands and a web browser.
The document discusses Amazon EC2 Container Service (ECS) and Amazon EC2 Container Registry (ECR). It provides an overview of how ECS manages Docker containers across server instances in a cluster, including task scheduling and service deployment. It also summarizes ECR as a fully managed private Docker container registry that provides security, reliability and integration with ECS and other AWS services. The document highlights key capabilities like load balancing, auto scaling, private access control and integration with tools like the Docker CLI.
Container orchestration from theory to practiceDocker, Inc.
"Join Laura Frank and Stephen Day as they explain and examine technical concepts behind container orchestration systems, like distributed consensus, object models, and node topology. These concepts build the foundation of every modern orchestration system, and each technical explanation will be illustrated using SwarmKit and Kubernetes as a real-world example. Gain a deeper understanding of how orchestration systems work in practice and walk away with more insights into your production applications."
Managed services such as AWS Lambda and API Gateway allow developers to focus on value adding development instead of IT heavy lifting. This workshop introduces how to build a simple REST blog backend using AWS technologies and the serverless framework.
Spring Cloud Config provides a centralized way to manage external configuration for distributed systems. The Config Server stores configuration in Git repositories and makes it available via REST APIs to client applications. Clients can bind to the Config Server to initialize their Spring Environment with remote property sources. The default storage backend uses Git, allowing version control and tooling support. The Config Server serves configuration properties and YAML files from Git or HashiCorp Vault. It maps request paths to files in sources by application, profile, and label. Client applications can encrypt/decrypt values.
DB proxy server test: run tests on tens of virtual machines with Jenkins, Vag...Timofey Turenko
The presentation describes CI environment for our product - Maxscale - database proxy server. To test such product we need a setup that consists of tens of machines: locally hosted virtual machines as well as machines from different clouds. All our Jenkins jobs are implemented in the form of Jenkins Job Builder code. Presentations also tells about our tool to manage virtual machines (wrapper over Vagrant)- MDBCI.
Spring and Cloud Foundry; a Marriage Made in HeavenJoshua Long
Spring and Cloud Foundry: a Marriage Made in Heaven. This talk introduces how to build Spring applications on top of Cloud Foundry, the open source PaaS from VMware
AWS CloudFormation Automation, TrafficScript, and Serverless architecture wit...PolarSeven Pty Ltd
Chris Kawchuck has 20 years experience in the Telecom and Service provider industry. He will be demonstrating how easy it is to spin up a Brocade vADC in AWS; enabling serverless architectures using S3 buckets, and accomplish real-time traffic rewrites to get you out of sticky situations.
Learn about:
1. Load balancing and scaling options available on AWS
2. Automating the Brocade vADC spin up using Cloudformation Templates
3. Enabling use of "Serverless" web pages in AWS 4.Taking care of tricky situations using TrafficScript
Implementing any 3rd party Load Balancer from the Amazon AWS Marketplace can be a daunting task. Not only does one have to learn the vendor's specific interface, you also need to perform quite a few administrative tasks to setup front end IPs, back end pools, clustering, and so on.
Brocade has published a CloudFormation Template (CFT) which takes all the hard work out of setting it up and operating. Using DevOps tools and open source scripts, we not only automate the deployment of the Brocade vADC within AWS, but all the configuration you need to administer, cluster, and provision your Load Balancers; including public IPs and your back-end server pools.
We would like you to try it, and take advantage of the powerful feature of the Brocade vADC.
https://github.com/dkalintsev/Brocade/tree/master/vADC/CloudFormation/Templates/Variants-and-experimental/Configured-by-Puppet
* Presented at the Sydney AWS User Group session 1st February 2017
http://www.meetup.com/AWS-Sydney/
Hosted and organised by PolarSeven - http://polarseven.com
View the full video presentation here:
https://youtu.be/rKTG2zjQS6o
Learn how to get the best out of Camunda Tasklist, an HTML 5 application for human workflow management. You will also hear how to benefit from the Camunda Javascript forms SDK in your very own frontend applications.
Business systems are meals. Nodes are a key ingredient. Do you configure and deploy business systems into multiple environments, with all the implied complexity of managing necessary variations and eliminating unwanted inconsistencies? Do you currently create Visio diagrams to describe your business systems, but long for something more actionable? Or do you use an existing definition format that you wish you could move into Chef?
In this talk we will share techniques for template-driven deployment of topologies composed of Chef nodes, and describe the latest incarnation of these techniques, which is supported by the knife topo plugin and exchange format, as well as our Automate.Insights SaaS based offering. We will also describe our latest work to integrate with chef-provisioning, and how these techniques could be used to map from existing formats such as AWS CloudFormation.
With such techniques you will be able to accelerate unleashing the awesome power of Chef across your enterprise.
Talk at ChefConf 2015 on techniques for template-driven deployment of topologies composed of Chef nodes, by John Sweitzer and Christine Draper.
Video:
https://www.youtube.com/watch?v=hoXf0Uo5bCo
Similar to cbq - Jobs and Tasks in the Background by Ortus (20)
Sami provided a beginner-friendly introduction to Amazon Web Services (AWS), covering essential terms, products, and services for cloud deployment. Participants explored AWS' latest Gen AI offerings, making it accessible for those starting their cloud journey or integrating AI into coding practices.
Explore the rapid development journey of TryBoxLang, completed in just 48 hours. This session delves into the innovative process behind creating TryBoxLang, a platform designed to showcase the capabilities of BoxLang by Ortus Solutions. Discover the challenges, strategies, and outcomes of this accelerated development effort, highlighting how TryBoxLang provides a practical introduction to BoxLang's features and benefits.
Are you wondering how to migrate to the Cloud? At the ITB session, we addressed the challenge of managing multiple ColdFusion licenses and AWS EC2 instances. Discover how you can consolidate with just one EC2 instance capable of running over 50 apps using CommandBox ColdFusion. This solution supports both ColdFusion flavors and includes cb-websites, a GoLang binary for managing CommandBox websites.
Discover BoxLang, the innovative JVM programming language developed by Ortus Solutions. Designed to harness the power of the Java Virtual Machine, BoxLang offers a modern approach to application development with robust performance and scalability. Join us as we explore the capabilities of BoxLang, its syntax, and how it enhances productivity in software development.
How to debug ColdFusion Applications using “ColdFusion Builder extension for ...Ortus Solutions, Corp
Unlock the secrets of seamless ColdFusion error troubleshooting! Join us to explore the potent capabilities of Visual Studio Code (VS Code) and ColdFusion Builder (CF Builder) in debugging. This hands-on session guides you through practical techniques tailored for local setups, ensuring a smooth and efficient development experience.
CommandBox was highlighted as a powerful web hosting solution, perfect for developers and businesses alike. Featuring a built-in server and command-line interface, CommandBox simplified web application management. Developers could deploy multiple application instances simultaneously, optimizing development workflows. CommandBox's efficient deployment processes ensured reliable web hosting, seamlessly integrating into existing workflows for scalability and feature enhancements.
Join me for an insightful journey into task scheduling within the ColdBox framework. In this session, we explored how to effortlessly create and manage scheduled tasks directly in your code, enhancing control and efficiency in applications and modules. Attendees experienced a user-friendly dashboard for seamless task management and monitoring. Whether you're experienced with ColdBox or new to it, this session provided practical knowledge and tips to streamline your development workflow.
In this session, we explored how the cbfs module empowers developers to abstract and manage file systems seamlessly across their lifecycle. From local development to S3 deployment and customized media providers requiring authentication, cbfs offers flexible solutions. We discussed how cbfs simplifies file handling with enhanced workflow efficiency compared to native methods, along with practical tips to accelerate complex file operations in your projects.
In this session, we explored setting up Playwright, an end-to-end testing tool for simulating browser interactions and running TestBox tests. Participants learned to configure Playwright for applications, simulate user interactions to stress-test forms, and handle scenarios like taking screenshots, recording sessions, capturing Chrome dev tools traces, testing login failures, and managing broken JavaScript. The session also covered using Playwright with non-ColdBox sites, providing practical insights into enhancing testing capabilities.
Discover Passkeys, the next evolution in secure login methods that eliminate traditional password vulnerabilities. Learn about the CBSecurity Passkeys module's installation, configuration, and integration into your application to enhance security.
In this session, we discussed the critical need for comprehensive backups across all aspects of our industry—from code and databases to webservers, file servers, and network configurations. Emphasizing the importance of proactive measures, attendees were urged to ensure their backup systems were tested through restoration processes. The session underscored the risk of discovering backup issues only during crises, highlighting the necessity of verifying backup integrity through restoration tests.
Participants explored how visual and functional coherence strengthened brand identity and streamlined development in this session. They learned to maintain consistency across platforms and enhance user experiences using Design Systems. Ideal for brand designers, UI/UX designers, developers, and product managers who sought to optimize efficiency and ensure consistency across projects.
Explore the latest in ColdBox Debugger v4.2.0, featuring the Hyper Collector for HTTP/S request tracking, Lucee SQL Collector for query profiling, and Heap Dump Support for memory leak debugging. Enhancements like the revamped Request Dock and improved SQL/JSON formatting streamline debugging for optimal ColdBox application performance and stability. Ideal for developers familiar with ColdBox, this session focuses on leveraging advanced debugging tools to enhance development efficiency.
Thinking about freelancing? It's not just about coding solo and avoiding coworkers. Join me as I share insights from my 15-year freelance journey, covering everything from managing invoices to client communication styles. This session blends ColdFusion-specific tips with general freelance and consulting advice, with time for audience Q&A.
Content templates, CBFS, Redirects, and Coldbox 7, oh my! ContentBox 6 is the game-changing new release for the ContentBox CMS platform. In this session, we'll discuss all of the new goodness added in the release, as well as show the many ways in which your single or multi-site ContentBox instance just became more powerful and flexible.
Building on his 2021 ITB presentation, "Monitoring Solutions for CF and Lucee," Charlie now focuses on practical demonstrations of these tools. Discover key observations and metrics for troubleshooting, tuning, and receiving alerts. Gain insights into the evolution of these tools since the last talk, drawn from Charlie's extensive experience assisting users with server, container, and CommandBox environments.
we delve into the power of headless CMS—a versatile solution separating content creation from presentation. Explore its benefits: multi-channel delivery, accelerated time-to-market, content reusability, scalability, technology flexibility, and enhanced security. Discover how headless CMS transforms digital content management, empowering efficient and flexible content delivery across diverse platforms.
Learn to manage your web form's question flow with RuleBox in this session. Simplify complex conditional statements by structuring logic in a readable and testable Given-When-Then format. Discussion covers prototyping tips, writing test cases, integrating external data, and managing multiple form versions with a single set of rules. Ideal for ColdFusion web developers exploring TestBox and/or RuleBox, with a demo featuring ColdBox and cborm, though not required.
In this session, developers explored CBWIRE, a ColdBox module that simplifies modern, reactive CFML app development without JavaScript frameworks like Vue or React. Attendees learned its usage, benefits, and the new features introduced in CBWIRE version 4, designed based on community feedback. The session catered to developers familiar with ColdBox and CFML, offering practical insights and guidance for leveraging CBWIRE effectively in their projects.
Building Scaleable Serverless Event-Driven Computing with AWS Lambda powered ...Ortus Solutions, Corp
Explore how to build scalable, serverless event-driven applications using AWS Lambda powered by BoxLang. This session dives into leveraging Lambda's capabilities to handle event-driven computing efficiently. Whether new to serverless architecture or looking to enhance your skills, join us to learn practical insights and techniques for optimizing application performance and scalability.
introduction of Ansys software and basic and advance knowledge of modelling s...sachin chaurasia
Ansys Mechanical enables you to solve complex structural engineering problems and make better, faster design decisions. With the finite element analysis (FEA) solvers available in the suite, you can customize and automate solutions for your structural mechanics problems and parameterize them to analyze multiple design scenarios. Ansys Mechanical is a dynamic tool that has a complete range of analysis tools.
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.bhatinidhi2001
CViewSurvey is a SaaS-based Web & Mobile application that provides digital transformation to traditional paper surveys and feedback for customer & employee experience, field & market research that helps you evaluate your customer's as well as employee's loyalty.
With our unique C.A.A.G. Collect, Analysis, Act & Grow approach; business & industry’s can create customized surveys on web, publish on app to collect unlimited response & review AI backed real-time data analytics on mobile & tablets anytime, anywhere. Data collected when offline is securely stored in the device, which syncs to the cloud server when connected to any network.
What is OCR Technology and How to Extract Text from Any Image for FreeTwisterTools
Discover the fascinating world of Optical Character Recognition (OCR) technology with our comprehensive presentation. Learn how OCR converts various types of documents, such as scanned paper documents, PDFs, or images captured by a digital camera, into editable and searchable data. Dive into the history, modern applications, and future trends of OCR technology. Get step-by-step instructions on how to extract text from any image online for free using a simple tool, along with best practices for OCR image preparation. Ideal for professionals, students, and tech enthusiasts looking to harness the power of OCR.
Ansys Mechanical enables you to solve complex structural engineering problems and make better, faster design decisions. With the finite element analysis (FEA) solvers available in the suite, you can customize and automate solutions for your structural mechanics problems and parameterize them to analyze multiple design scenarios. Ansys Mechanical is a dynamic tool that has a complete range of analysis tools.
Lots of bloggers are using Google AdSense now. It’s getting really popular. With AdSense, bloggers can make money by showing ads on their websites. Read this important article written by the experienced designers of the best website designing company in Delhi –
Overview of ERP - Mechlin Technologies.pptxMitchell Marsh
This PowerPoint presentation provides a comprehensive overview of Enterprise Resource Planning (ERP) systems. It covers the fundamental concepts, benefits, and key functionalities of ERP software, illustrating how it integrates various business processes into a unified system. From finance and HR to supply chain and customer relationship management, ERP facilitates efficient data management and decision-making across organizations. Whether you're new to ERP or looking to deepen your understanding, this presentation offers valuable insights into leveraging ERP for business success.
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdfTrackobit
What do fleet managers do? What are their duties, responsibilities, and challenges? And what makes a fleet manager effective and successful? This blog answers all these questions.
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple StepsEstuary Flow
Unlock the full potential of your data by effortlessly migrating from PostgreSQL to Snowflake, the leading cloud data warehouse. This comprehensive guide presents an easy-to-follow 8-step process using Estuary Flow, an open-source data operations platform designed to simplify data pipelines.
Discover how to seamlessly transfer your PostgreSQL data to Snowflake, leveraging Estuary Flow's intuitive interface and powerful real-time replication capabilities. Harness the power of both platforms to create a robust data ecosystem that drives business intelligence, analytics, and data-driven decision-making.
Key Takeaways:
1. Effortless Migration: Learn how to migrate your PostgreSQL data to Snowflake in 8 simple steps, even with limited technical expertise.
2. Real-Time Insights: Achieve near-instantaneous data syncing for up-to-the-minute analytics and reporting.
3. Cost-Effective Solution: Lower your total cost of ownership (TCO) with Estuary Flow's efficient and scalable architecture.
4. Seamless Integration: Combine the strengths of PostgreSQL's transactional power with Snowflake's cloud-native scalability and data warehousing features.
Don't miss out on this opportunity to unlock the full potential of your data. Read & Download this comprehensive guide now and embark on a seamless data journey from PostgreSQL to Snowflake with Estuary Flow!
Try it Free: https://dashboard.estuary.dev/register
An MVP (Minimum Viable Product) mobile application is a streamlined version of a mobile app that includes only the core features necessary to address the primary needs of its users. The purpose of an MVP is to validate the app concept with minimal resources, gather user feedback, and identify any areas for improvement before investing in a full-scale development. This approach allows businesses to quickly launch their app, test its market viability, and make data-driven decisions for future enhancements, ensuring a higher likelihood of success and user satisfaction.
React Native vs Flutter - SSTech SystemSSTech System
Your project needs and long-term objectives will ultimately choose which of React Native and Flutter to use. For applications using JavaScript and current web technologies in particular, React Native is a mature and trustworthy choice. For projects that value performance and customizability across many platforms, Flutter, on the other hand, provides outstanding performance and a unified UI development experience.
IN Dubai [WHATSAPP:Only (+971588192166**)] Abortion Pills For Sale In Dubai** UAE** Mifepristone and Misoprostol Tablets Available In Dubai** UAE
CONTACT DR. SINDY Whatsapp +971588192166* We Have Abortion Pills / Cytotec Tablets /Mifegest Kit Available in Dubai** Sharjah** Abudhabi** Ajman** Alain** Fujairah** Ras Al Khaimah** Umm Al Quwain** UAE** Buy cytotec in Dubai +971588192166* '''Abortion Pills near me DUBAI | ABU DHABI|UAE. Price of Misoprostol** Cytotec” +971588192166* ' Dr.SINDY ''BUY ABORTION PILLS MIFEGEST KIT** MISOPROSTOL** CYTOTEC PILLS IN DUBAI** ABU DHABI**UAE'' Contact me now via What's App… abortion pills in dubai Mtp-Kit Prices
abortion pills available in dubai/abortion pills for sale in dubai/abortion pills in uae/cytotec dubai/abortion pills in abu dhabi/abortion pills available in abu dhabi/abortion tablets in uae
… abortion Pills Cytotec also available Oman Qatar Doha Saudi Arabia Bahrain Above all** Cytotec Abortion Pills are Available In Dubai / UAE** you will be very happy to do abortion in Dubai we are providing cytotec 200mg abortion pills in Dubai** UAE. Medication abortion offers an alternative to Surgical Abortion for women in the early weeks of pregnancy. We only offer abortion pills from 1 week-6 Months. We then advise you to use surgery if it's beyond 6 months. Our Abu Dhabi** Ajman** Al Ain** Dubai** Fujairah** Ras Al Khaimah (RAK)** Sharjah** Umm Al Quwain (UAQ) United Arab Emirates Abortion Clinic provides the safest and most advanced techniques for providing non-surgical** medical and surgical abortion methods for early through late second trimester** including the Abortion By Pill Procedure (RU 486** Mifeprex** Mifepristone** early options French Abortion Pill)** Tamoxifen** Methotrexate and Cytotec (Misoprostol). The Abu Dhabi** United Arab Emirates Abortion Clinic performs Same Day Abortion Procedure using medications that are taken on the first day of the office visit and will cause the abortion to occur generally within 4 to 6 hours (as early as 30 minutes) for patients who are 3 to 12 weeks pregnant. When Mifepristone and Misoprostol are used** 50% of patients complete in 4 to 6 hours; 75% to 80% in 12 hours; and 90% in 24 hours. We use a regimen that allows for completion without the need for surgery 99% of the time. All advanced second trimester and late term pregnancies at our Tampa clinic (17 to 24 weeks or greater) can be completed within 24 hours or less 99% of the time without the need for surgery. The procedure is completed with minimal to no complications. Our Women's Health Center located in Abu Dhabi** United Arab Emirates** uses the latest medications for medical abortions (RU-486** Mifeprex** Mifegyne** Mifepristone** early options French abortion pill)** Methotrexate and Cytotec (Misoprostol). The safety standards of our Abu Dhabi** United Arab Emirates Abortion Doctors remain unparalleled. They consistently maintain the lowest complication rates throughout the nation. Our
Break data silos with real-time connectivity using Confluent Cloud Connectorsconfluent
Connectors integrate Apache Kafka® with external data systems, enabling you to move away from a brittle spaghetti architecture to one that is more streamlined, secure, and future-proof. However, if your team still spends multiple dev cycles building and managing connectors using just open source Kafka Connect, it’s time to consider a faster and cost-effective alternative.
10. A protocol-based queueing
system for ColdBox
Can interact with different providers, like
the ColdBox Async Engine, a database,
Redis, or Rabbit MQ
A protocol-based queueing
system for ColdBox
11. A protocol-based queueing
system for ColdBox
Sends a message to be consumed later.
It can be consumed by the same
application or a completely different
application, language, or service.
A protocol-based queueing
system for ColdBox
12. Defines a Job as the unit of work on a queue
Push a Job onto a queue connection to be worked later
Define multiple queues or named piles of work
Register worker pools to work the jobs passed to queues
Ability to switch between Queue Providers easily
What does cbq give me?
13. Why not just use...?
cfthread, runAsync, AsyncManager
Redis, Rabbit MQ, etc.
Homegrown queue framework
14. Backend processing using message queues is a paradigm shift, and CBQ is a game
changer. Asynchronous FIFO processing dynamically split across an unlimited
number of servers allows one to break up any large processing load seamlessly.
Batching, chains, and one-off jobs with built-in logging, automated intelligent
retries, and the ability to use anything from databases to cloud-based services such
as AWS SQS to manage the job queue allows me to build incredibly powerful,
scalable, and resilient systems for my financial services clients. Highly
recommended!
John Wilson
Synaptrix
17. Other reasons
Easier testing making sure the right jobs were
queued
Sync in development, Rabbit in production
Adjust the worker pool scale dynamically
Retry, timeout, and backoff built in.
20. Does its work in the `handle` method
Serializes and deserializes itself to the queue protocol
Set instance data in the `properties`
Exist in the context of your application
Job
22. A named stack of jobs or messages to be delivered
A queue connection must have at least one queue which is
usually `default`
A queue connection can have as many queues as desired
Queue
24. How a queue connection connects to a backend like Redis,
RabbitMQ, or a database
Can be used multiple times in a single application to define
multiple queue connections with different configuration
options
Queue Provider
26. A named combination of Queue Provider and properties
Allows you to connect with multiple Database providers or
multiple Redis providers
Queue Connection
28. A group of workers for a Queue Connection
Can optionally work a subset of queues
Can optionally work queues in a specific order
Can be scaled up or down as needed
Worker Pool
37. moduleSettings = {
"cbq" : {
// The path the custom config file to
// register connections and worker pools
"configPath" : "config.cbq",
// Flag if workers should be registered.
// If your application only pushes to the queues,
// you can set this to false.
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
// The interval to poll for changes to the worker pool scaling.
// Defaults to 0 which turns off the scheduled scaling feature.
"scaleInterval" : 0,
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
38. moduleSettings = {
"cbq" : {
// The path the custom config file to
// register connections and worker pools
"configPath" : "config.cbq",
// Flag if workers should be registered.
// If your application only pushes to the queues,
// you can set this to false.
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
// The interval to poll for changes to the worker pool scaling.
// Defaults to 0 which turns off the scheduled scaling feature.
"scaleInterval" : 0,
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// The path the custom config file to
// register connections and worker pools
"configPath" : "config.cbq",
moduleSettings = {
1
"cbq" : {
2
3
4
5
6
// Flag if workers should be registered.
7
// If your application only pushes to the queues,
8
// you can set this to false.
9
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
10
11
// The interval to poll for changes to the worker pool scaling.
12
// Defaults to 0 which turns off the scheduled scaling feature.
13
"scaleInterval" : 0,
14
15
// continued...
16
}
17
};
18
39. moduleSettings = {
"cbq" : {
// The path the custom config file to
// register connections and worker pools
"configPath" : "config.cbq",
// Flag if workers should be registered.
// If your application only pushes to the queues,
// you can set this to false.
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
// The interval to poll for changes to the worker pool scaling.
// Defaults to 0 which turns off the scheduled scaling feature.
"scaleInterval" : 0,
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// The path the custom config file to
// register connections and worker pools
"configPath" : "config.cbq",
moduleSettings = {
1
"cbq" : {
2
3
4
5
6
// Flag if workers should be registered.
7
// If your application only pushes to the queues,
8
// you can set this to false.
9
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
10
11
// The interval to poll for changes to the worker pool scaling.
12
// Defaults to 0 which turns off the scheduled scaling feature.
13
"scaleInterval" : 0,
14
15
// continued...
16
}
17
};
18
// Flag if workers should be registered.
// If your application only pushes to the queues,
// you can set this to false.
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
moduleSettings = {
1
"cbq" : {
2
// The path the custom config file to
3
// register connections and worker pools
4
"configPath" : "config.cbq",
5
6
7
8
9
10
11
// The interval to poll for changes to the worker pool scaling.
12
// Defaults to 0 which turns off the scheduled scaling feature.
13
"scaleInterval" : 0,
14
15
// continued...
16
}
17
};
18
40. moduleSettings = {
"cbq" : {
// The path the custom config file to
// register connections and worker pools
"configPath" : "config.cbq",
// Flag if workers should be registered.
// If your application only pushes to the queues,
// you can set this to false.
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
// The interval to poll for changes to the worker pool scaling.
// Defaults to 0 which turns off the scheduled scaling feature.
"scaleInterval" : 0,
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// The path the custom config file to
// register connections and worker pools
"configPath" : "config.cbq",
moduleSettings = {
1
"cbq" : {
2
3
4
5
6
// Flag if workers should be registered.
7
// If your application only pushes to the queues,
8
// you can set this to false.
9
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
10
11
// The interval to poll for changes to the worker pool scaling.
12
// Defaults to 0 which turns off the scheduled scaling feature.
13
"scaleInterval" : 0,
14
15
// continued...
16
}
17
};
18
// Flag if workers should be registered.
// If your application only pushes to the queues,
// you can set this to false.
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
moduleSettings = {
1
"cbq" : {
2
// The path the custom config file to
3
// register connections and worker pools
4
"configPath" : "config.cbq",
5
6
7
8
9
10
11
// The interval to poll for changes to the worker pool scaling.
12
// Defaults to 0 which turns off the scheduled scaling feature.
13
"scaleInterval" : 0,
14
15
// continued...
16
}
17
};
18
// The interval to poll for changes to the worker pool scaling.
// Defaults to 0 which turns off the scheduled scaling feature.
"scaleInterval" : 0,
moduleSettings = {
1
"cbq" : {
2
// The path the custom config file to
3
// register connections and worker pools
4
"configPath" : "config.cbq",
5
6
// Flag if workers should be registered.
7
// If your application only pushes to the queues,
8
// you can set this to false.
9
"registerWorkers" : getSystemSetting( "CBQ_REGISTER_WORKERS", true ),
10
11
12
13
14
15
// continued...
16
}
17
};
18
41. moduleSettings = {
"cbq" : {
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
// The default amount of time, in seconds,
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
// The default amount of attempts to try before failing a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerMaxAttempts" : 1,
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
"registerJobInterceptorRestrictionAspect" : false
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
42. moduleSettings = {
"cbq" : {
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
// The default amount of time, in seconds,
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
// The default amount of attempts to try before failing a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerMaxAttempts" : 1,
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
"registerJobInterceptorRestrictionAspect" : false
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
moduleSettings = {
1
"cbq" : {
2
3
4
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
43. moduleSettings = {
"cbq" : {
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
// The default amount of time, in seconds,
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
// The default amount of attempts to try before failing a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerMaxAttempts" : 1,
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
"registerJobInterceptorRestrictionAspect" : false
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
moduleSettings = {
1
"cbq" : {
2
3
4
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
7
8
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
44. moduleSettings = {
"cbq" : {
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
// The default amount of time, in seconds,
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
// The default amount of attempts to try before failing a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerMaxAttempts" : 1,
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
"registerJobInterceptorRestrictionAspect" : false
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
moduleSettings = {
1
"cbq" : {
2
3
4
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
7
8
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
12
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
45. moduleSettings = {
"cbq" : {
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
// The default amount of time, in seconds,
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
// The default amount of attempts to try before failing a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerMaxAttempts" : 1,
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
"registerJobInterceptorRestrictionAspect" : false
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
moduleSettings = {
1
"cbq" : {
2
3
4
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
7
8
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
12
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// The default amount of attempts to try before failing a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerMaxAttempts" : 1,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
15
16
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
46. moduleSettings = {
"cbq" : {
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
// The default amount of time, in seconds,
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
// The default amount of attempts to try before failing a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerMaxAttempts" : 1,
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
"registerJobInterceptorRestrictionAspect" : false
// continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// The default amount of time, in seconds, to delay a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerBackoff" : 0,
moduleSettings = {
1
"cbq" : {
2
3
4
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// The default amount of time, in seconds, to wait before timing out a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerTimeout" : 60,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
7
8
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// to wait for tasks to complete before killing them when requesting a shutdown.
"defaultWorkerShutdownTimeout" : 60,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
12
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// The default amount of attempts to try before failing a job.
// Used if the connection and job doesn't define their own.
"defaultWorkerMaxAttempts" : 1,
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
15
16
17
18
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
19
"registerJobInterceptorRestrictionAspect" : false
20
21
// continued...
22
}
23
};
24
// Flag to allow restricting Job interceptor execution using a `jobPattern` annotation.
"registerJobInterceptorRestrictionAspect" : false
moduleSettings = {
1
"cbq" : {
2
// The default amount of time, in seconds, to delay a job.
3
// Used if the connection and job doesn't define their own.
4
"defaultWorkerBackoff" : 0,
5
6
// The default amount of time, in seconds, to wait before timing out a job.
7
// Used if the connection and job doesn't define their own.
8
"defaultWorkerTimeout" : 60,
9
10
// The default amount of time, in seconds,
11
// to wait for tasks to complete before killing them when requesting a shutdown.
12
"defaultWorkerShutdownTimeout" : 60,
13
14
// The default amount of attempts to try before failing a job.
15
// Used if the connection and job doesn't define their own.
16
"defaultWorkerMaxAttempts" : 1,
17
18
19
20
21
// continued...
22
}
23
};
24
47. moduleSettings = {
"cbq" : {
// Datasource information for tracking batches.
"batchRepositoryProperties" : {
"tableName" : "cbq_batches",
// `datasource` can also be a struct
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in queryOptions.
"queryOptions" : {},
// Cleanup options for the batch table
"cleanup" : {
"enabled" : false,
// A callback to configure the ColdBox Scheduled Task
"frequency" : ( task ) => { task.everyDay(); },
// A QueryBuilder instance to configure what batches to delete.
// Only completed or cancelled batches can be deleted.
"criteria" : ( qb, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
qb.where( ( q ) => {
q.where( "cancelledDate", "<=", thirtyDaysAgo );
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
} );
}
}
}, // continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
48. moduleSettings = {
"cbq" : {
// Datasource information for tracking batches.
"batchRepositoryProperties" : {
"tableName" : "cbq_batches",
// `datasource` can also be a struct
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in queryOptions.
"queryOptions" : {},
// Cleanup options for the batch table
"cleanup" : {
"enabled" : false,
// A callback to configure the ColdBox Scheduled Task
"frequency" : ( task ) => { task.everyDay(); },
// A QueryBuilder instance to configure what batches to delete.
// Only completed or cancelled batches can be deleted.
"criteria" : ( qb, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
qb.where( ( q ) => {
q.where( "cancelledDate", "<=", thirtyDaysAgo );
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
} );
}
}
}, // continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
"tableName" : "cbq_batches",
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
5
// `datasource` can also be a struct
6
"datasource" : "",
7
// The sibling `datasource` property overrides any defined datasource in queryOptions.
8
"queryOptions" : {},
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
49. moduleSettings = {
"cbq" : {
// Datasource information for tracking batches.
"batchRepositoryProperties" : {
"tableName" : "cbq_batches",
// `datasource` can also be a struct
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in queryOptions.
"queryOptions" : {},
// Cleanup options for the batch table
"cleanup" : {
"enabled" : false,
// A callback to configure the ColdBox Scheduled Task
"frequency" : ( task ) => { task.everyDay(); },
// A QueryBuilder instance to configure what batches to delete.
// Only completed or cancelled batches can be deleted.
"criteria" : ( qb, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
qb.where( ( q ) => {
q.where( "cancelledDate", "<=", thirtyDaysAgo );
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
} );
}
}
}, // continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
"tableName" : "cbq_batches",
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
5
// `datasource` can also be a struct
6
"datasource" : "",
7
// The sibling `datasource` property overrides any defined datasource in queryOptions.
8
"queryOptions" : {},
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
// `datasource` can also be a struct
"datasource" : "",
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
"tableName" : "cbq_batches",
5
6
7
// The sibling `datasource` property overrides any defined datasource in queryOptions.
8
"queryOptions" : {},
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
50. moduleSettings = {
"cbq" : {
// Datasource information for tracking batches.
"batchRepositoryProperties" : {
"tableName" : "cbq_batches",
// `datasource` can also be a struct
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in queryOptions.
"queryOptions" : {},
// Cleanup options for the batch table
"cleanup" : {
"enabled" : false,
// A callback to configure the ColdBox Scheduled Task
"frequency" : ( task ) => { task.everyDay(); },
// A QueryBuilder instance to configure what batches to delete.
// Only completed or cancelled batches can be deleted.
"criteria" : ( qb, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
qb.where( ( q ) => {
q.where( "cancelledDate", "<=", thirtyDaysAgo );
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
} );
}
}
}, // continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
"tableName" : "cbq_batches",
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
5
// `datasource` can also be a struct
6
"datasource" : "",
7
// The sibling `datasource` property overrides any defined datasource in queryOptions.
8
"queryOptions" : {},
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
// `datasource` can also be a struct
"datasource" : "",
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
"tableName" : "cbq_batches",
5
6
7
// The sibling `datasource` property overrides any defined datasource in queryOptions.
8
"queryOptions" : {},
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
// The sibling `datasource` property overrides any defined datasource in queryOptions.
"queryOptions" : {},
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
"tableName" : "cbq_batches",
5
// `datasource` can also be a struct
6
"datasource" : "",
7
8
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
51. moduleSettings = {
"cbq" : {
// Datasource information for tracking batches.
"batchRepositoryProperties" : {
"tableName" : "cbq_batches",
// `datasource` can also be a struct
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in queryOptions.
"queryOptions" : {},
// Cleanup options for the batch table
"cleanup" : {
"enabled" : false,
// A callback to configure the ColdBox Scheduled Task
"frequency" : ( task ) => { task.everyDay(); },
// A QueryBuilder instance to configure what batches to delete.
// Only completed or cancelled batches can be deleted.
"criteria" : ( qb, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
qb.where( ( q ) => {
q.where( "cancelledDate", "<=", thirtyDaysAgo );
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
} );
}
}
}, // continued...
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
"tableName" : "cbq_batches",
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
5
// `datasource` can also be a struct
6
"datasource" : "",
7
// The sibling `datasource` property overrides any defined datasource in queryOptions.
8
"queryOptions" : {},
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
// `datasource` can also be a struct
"datasource" : "",
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
"tableName" : "cbq_batches",
5
6
7
// The sibling `datasource` property overrides any defined datasource in queryOptions.
8
"queryOptions" : {},
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
// The sibling `datasource` property overrides any defined datasource in queryOptions.
"queryOptions" : {},
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
"tableName" : "cbq_batches",
5
// `datasource` can also be a struct
6
"datasource" : "",
7
8
9
// Cleanup options for the batch table
10
"cleanup" : {
11
"enabled" : false,
12
// A callback to configure the ColdBox Scheduled Task
13
"frequency" : ( task ) => { task.everyDay(); },
14
// A QueryBuilder instance to configure what batches to delete.
15
// Only completed or cancelled batches can be deleted.
16
"criteria" : ( qb, currentUnixTimestamp ) => {
17
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
18
qb.where( ( q ) => {
19
q.where( "cancelledDate", "<=", thirtyDaysAgo );
20
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
21
} );
22
}
23
}
24
}, // continued...
25
}
26
};
27
// Cleanup options for the batch table
"cleanup" : {
"enabled" : false,
// A callback to configure the ColdBox Scheduled Task
"frequency" : ( task ) => { task.everyDay(); },
// A QueryBuilder instance to configure what batches to delete.
// Only completed or cancelled batches can be deleted.
"criteria" : ( qb, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
qb.where( ( q ) => {
q.where( "cancelledDate", "<=", thirtyDaysAgo );
q.orWhere( "completedDate", "<=", thirtyDaysAgo );
} );
}
}
moduleSettings = {
1
"cbq" : {
2
// Datasource information for tracking batches.
3
"batchRepositoryProperties" : {
4
"tableName" : "cbq_batches",
5
// `datasource` can also be a struct
6
"datasource" : "",
7
// The sibling `datasource` property overrides any defined datasource in queryOptions.
8
"queryOptions" : {},
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
}, // continued...
25
}
26
};
27
52. moduleSettings = {
"cbq" : {
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
"logFailedJobsProperties" : {
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
53. moduleSettings = {
"cbq" : {
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
"logFailedJobsProperties" : {
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
moduleSettings = {
1
"cbq" : {
2
3
4
5
"logFailedJobsProperties" : {
6
"tableName" : "cbq_failed_jobs",
7
// `datasource` can also be a struct.
8
"datasource" : "",
9
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
10
"queryOptions" : {},
11
"cleanup" : {
12
"enabled" : false,
13
"frequency" : ( task ) => { task.everyDay(); },
14
"criteria" : ( q, currentUnixTimestamp ) => {
15
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
16
q.where( "failedDate", "<=", thirtyDaysAgo );
17
}
18
}
19
}
20
}
21
};
22
54. moduleSettings = {
"cbq" : {
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
"logFailedJobsProperties" : {
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
moduleSettings = {
1
"cbq" : {
2
3
4
5
"logFailedJobsProperties" : {
6
"tableName" : "cbq_failed_jobs",
7
// `datasource` can also be a struct.
8
"datasource" : "",
9
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
10
"queryOptions" : {},
11
"cleanup" : {
12
"enabled" : false,
13
"frequency" : ( task ) => { task.everyDay(); },
14
"criteria" : ( q, currentUnixTimestamp ) => {
15
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
16
q.where( "failedDate", "<=", thirtyDaysAgo );
17
}
18
}
19
}
20
}
21
};
22
// Configuration information for logging failed jobs.
"logFailedJobsProperties" : {
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
}
moduleSettings = {
1
"cbq" : {
2
// Flag to turn on logging failed jobs to a database table.
3
"logFailedJobs" : false,
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
}
21
};
22
55. moduleSettings = {
"cbq" : {
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
"logFailedJobsProperties" : {
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
moduleSettings = {
1
"cbq" : {
2
3
4
5
"logFailedJobsProperties" : {
6
"tableName" : "cbq_failed_jobs",
7
// `datasource` can also be a struct.
8
"datasource" : "",
9
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
10
"queryOptions" : {},
11
"cleanup" : {
12
"enabled" : false,
13
"frequency" : ( task ) => { task.everyDay(); },
14
"criteria" : ( q, currentUnixTimestamp ) => {
15
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
16
q.where( "failedDate", "<=", thirtyDaysAgo );
17
}
18
}
19
}
20
}
21
};
22
// Configuration information for logging failed jobs.
"logFailedJobsProperties" : {
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
}
moduleSettings = {
1
"cbq" : {
2
// Flag to turn on logging failed jobs to a database table.
3
"logFailedJobs" : false,
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
}
21
};
22
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
moduleSettings = {
1
"cbq" : {
2
// Flag to turn on logging failed jobs to a database table.
3
"logFailedJobs" : false,
4
// Configuration information for logging failed jobs.
5
"logFailedJobsProperties" : {
6
7
8
9
10
11
"cleanup" : {
12
"enabled" : false,
13
"frequency" : ( task ) => { task.everyDay(); },
14
"criteria" : ( q, currentUnixTimestamp ) => {
15
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
16
q.where( "failedDate", "<=", thirtyDaysAgo );
17
}
18
}
19
}
20
}
21
};
22
56. moduleSettings = {
"cbq" : {
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
"logFailedJobsProperties" : {
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Flag to turn on logging failed jobs to a database table.
"logFailedJobs" : false,
// Configuration information for logging failed jobs.
moduleSettings = {
1
"cbq" : {
2
3
4
5
"logFailedJobsProperties" : {
6
"tableName" : "cbq_failed_jobs",
7
// `datasource` can also be a struct.
8
"datasource" : "",
9
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
10
"queryOptions" : {},
11
"cleanup" : {
12
"enabled" : false,
13
"frequency" : ( task ) => { task.everyDay(); },
14
"criteria" : ( q, currentUnixTimestamp ) => {
15
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
16
q.where( "failedDate", "<=", thirtyDaysAgo );
17
}
18
}
19
}
20
}
21
};
22
// Configuration information for logging failed jobs.
"logFailedJobsProperties" : {
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
}
moduleSettings = {
1
"cbq" : {
2
// Flag to turn on logging failed jobs to a database table.
3
"logFailedJobs" : false,
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
}
21
};
22
"tableName" : "cbq_failed_jobs",
// `datasource` can also be a struct.
"datasource" : "",
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
"queryOptions" : {},
moduleSettings = {
1
"cbq" : {
2
// Flag to turn on logging failed jobs to a database table.
3
"logFailedJobs" : false,
4
// Configuration information for logging failed jobs.
5
"logFailedJobsProperties" : {
6
7
8
9
10
11
"cleanup" : {
12
"enabled" : false,
13
"frequency" : ( task ) => { task.everyDay(); },
14
"criteria" : ( q, currentUnixTimestamp ) => {
15
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
16
q.where( "failedDate", "<=", thirtyDaysAgo );
17
}
18
}
19
}
20
}
21
};
22
"cleanup" : {
"enabled" : false,
"frequency" : ( task ) => { task.everyDay(); },
"criteria" : ( q, currentUnixTimestamp ) => {
var thirtyDaysAgo = currentUnixTimestamp - ( 60 * 60 * 24 * 30 );
q.where( "failedDate", "<=", thirtyDaysAgo );
}
}
moduleSettings = {
1
"cbq" : {
2
// Flag to turn on logging failed jobs to a database table.
3
"logFailedJobs" : false,
4
// Configuration information for logging failed jobs.
5
"logFailedJobsProperties" : {
6
"tableName" : "cbq_failed_jobs",
7
// `datasource` can also be a struct.
8
"datasource" : "",
9
// The sibling `datasource` property overrides any defined datasource in `queryOptions`.
10
"queryOptions" : {},
11
12
13
14
15
16
17
18
19
}
20
}
21
};
22