In this workshop we would like to take a closer look at the new features of Java 7 and Java 8.
Java 7 has brought a couple of language enhancements to assist developers in their daily programming tasks and starting from Java 8 we finally have the opportunity to include a functional programming touch to Java thanks to Lambdas! Lambdas allow us to specify closures to create clean and brief solutions for which we would otherwise be obligated to write down a lot of boilerplate code.
For example in order to sort a List of Strings based on their length we can now write the following code:
Collections.sort(list, (s1, s2) -> s1.length() - s2.length());
Besides lambdas, Java 8 also comes with extension methods, allowing us to write interfaces containing implemented methods, streams and bulk data operations, granting us the opportunity to chain operations on collections to obtain a filtered or transformed set of the elements in our collection, and the possibility to pass functions as parameters. These features alone will have a major impact on the way how Java APIs can be written. There's also a brand new Date and Time API inspired on the popular JodaTime API and a couple of other language enhancements to aid Java developers in writing solutions in a more elegant way.
Be sure to follow this workshop to stay up to date with the latest evolutions of the Java programming language. Java 8 is definitely an update of the programming language which you don't want to miss out on!
Discuss about java 9 with latest featuresNexSoftsys
The upcoming version of java will be transformational for the platform but developers can comfort that java 9 officially launch in 2017. In this presentation also discuss about latest features included in java 9.
Training Slides: Intermediate 202: Performing Cluster Maintenance with Zero-D...Continuent
Join us for this intermediate training session as we explore how to leverage the power of the Tungsten Clustering to perform database and OS maintenance with zero-downtime. This training is for anyone new to Continuent without prior experience, but will also serve as a wonderful refresher for any current users. Basic MySQL knowledge is assumed.
AGENDA
- Review the cluster architecture
- Describe the rolling maintenance process
- Explore what happens during a master switch
- Discuss cluster states
- Demonstrate rolling maintenance
- Re-cap commands and resources used during the demo
Structured concurrency with Kotlin Coroutines
1. Theory
- Coroutines
- Suspending functions
- Asynchronous Flows
- Channels
2. Practice
- Business lookup feature implementation in TransferWise app for Android
In this workshop we would like to take a closer look at the new features of Java 7 and Java 8.
Java 7 has brought a couple of language enhancements to assist developers in their daily programming tasks and starting from Java 8 we finally have the opportunity to include a functional programming touch to Java thanks to Lambdas! Lambdas allow us to specify closures to create clean and brief solutions for which we would otherwise be obligated to write down a lot of boilerplate code.
For example in order to sort a List of Strings based on their length we can now write the following code:
Collections.sort(list, (s1, s2) -> s1.length() - s2.length());
Besides lambdas, Java 8 also comes with extension methods, allowing us to write interfaces containing implemented methods, streams and bulk data operations, granting us the opportunity to chain operations on collections to obtain a filtered or transformed set of the elements in our collection, and the possibility to pass functions as parameters. These features alone will have a major impact on the way how Java APIs can be written. There's also a brand new Date and Time API inspired on the popular JodaTime API and a couple of other language enhancements to aid Java developers in writing solutions in a more elegant way.
Be sure to follow this workshop to stay up to date with the latest evolutions of the Java programming language. Java 8 is definitely an update of the programming language which you don't want to miss out on!
Discuss about java 9 with latest featuresNexSoftsys
The upcoming version of java will be transformational for the platform but developers can comfort that java 9 officially launch in 2017. In this presentation also discuss about latest features included in java 9.
Training Slides: Intermediate 202: Performing Cluster Maintenance with Zero-D...Continuent
Join us for this intermediate training session as we explore how to leverage the power of the Tungsten Clustering to perform database and OS maintenance with zero-downtime. This training is for anyone new to Continuent without prior experience, but will also serve as a wonderful refresher for any current users. Basic MySQL knowledge is assumed.
AGENDA
- Review the cluster architecture
- Describe the rolling maintenance process
- Explore what happens during a master switch
- Discuss cluster states
- Demonstrate rolling maintenance
- Re-cap commands and resources used during the demo
Structured concurrency with Kotlin Coroutines
1. Theory
- Coroutines
- Suspending functions
- Asynchronous Flows
- Channels
2. Practice
- Business lookup feature implementation in TransferWise app for Android
jLove 2020 - Micronaut and graalvm: The power of AoTIván López Martín
Micronaut is a reflection-free app-development framework that uses ahead-of-time (AoT) compilation to precompute everything in the application, paving the way for lightning-fast startup times and significantly reduced memory consumption. What if I told you that you can reduce the startup time by orders of magnitude? And what if you could reduce memory consumption even more?
GraalVM is a new universal virtual machine from Oracle that supports a polyglot runtime environment. GraalVM has the ability to compile Java applications down to native machine code, making it an ideal partner for Micronaut.
In this talk you will learn how you can take advantage of GraalVM's powerful capabilities to convert your Micronaut applications to run as binary native images.
In 30 minutes I would like to show:
1. Why is it worth to spend some time and learn Gatling - a tool for integration/performance test of your web application?
2. Under what circumstances it is necessary to have Gatling in your toolbox?
3. What are Gatling cons and what kind of problems can you expect?
For sure there is no silver bullet in testing tools area, but you will definitely love Gatling DSL.
JavaOne 2017 presentation about migration existing code to Java 9 modules.
Demos used during the presentation can be found on GitHub: https://github.com/java9-modularity/java9-migration-demos
Gatling is Open Source Stress testing tool.
Why Gatling:
- High Performance.
- Multi Threading vs (Akka) Actor Model.
- Synchronous Blocking IOs vs asynchronous Non-blocking IOs Netty.
jLove 2020 - Micronaut and graalvm: The power of AoTIván López Martín
Micronaut is a reflection-free app-development framework that uses ahead-of-time (AoT) compilation to precompute everything in the application, paving the way for lightning-fast startup times and significantly reduced memory consumption. What if I told you that you can reduce the startup time by orders of magnitude? And what if you could reduce memory consumption even more?
GraalVM is a new universal virtual machine from Oracle that supports a polyglot runtime environment. GraalVM has the ability to compile Java applications down to native machine code, making it an ideal partner for Micronaut.
In this talk you will learn how you can take advantage of GraalVM's powerful capabilities to convert your Micronaut applications to run as binary native images.
In 30 minutes I would like to show:
1. Why is it worth to spend some time and learn Gatling - a tool for integration/performance test of your web application?
2. Under what circumstances it is necessary to have Gatling in your toolbox?
3. What are Gatling cons and what kind of problems can you expect?
For sure there is no silver bullet in testing tools area, but you will definitely love Gatling DSL.
JavaOne 2017 presentation about migration existing code to Java 9 modules.
Demos used during the presentation can be found on GitHub: https://github.com/java9-modularity/java9-migration-demos
Gatling is Open Source Stress testing tool.
Why Gatling:
- High Performance.
- Multi Threading vs (Akka) Actor Model.
- Synchronous Blocking IOs vs asynchronous Non-blocking IOs Netty.
MS Office install has required the removal of the previously installed version of your Office product on the device or system. Office 365 and other subscription offers the various features, which you do not get when you do not purchase the Office product. The office can be used free, as MS provides the trial versions of every tool. VISIT HERE: Office setup TODAY.
How and why we evolved a legacy Java web application to Scala... and we are s...Katia Aresti
Applications get old, and technology moves fast. Overtime, adding or modifying functionalities might become as expensive as re-coding everything all from scratch. But rewriting a complete website and its functionalities it’s hard if we want to minimize the risks of breaking existing functionalities and specially when this application fits in a ecosystem and interacts with other pieces of software and teams.
In this session, you will learn how we moved from a legacy java monolithic website using scala PlayFramework, AngularJS, Elasticsearch and MongoDB, how we built a multi service and REST oriented architecture, which were the technical and human problems we encountered and how we managed to solved them.
A Hitchhiker's Guide to Cloud Native Java EEQAware GmbH
JavaLand 2018, Brühl: Talk by Mario-Leander-Reimer (@LeanderReimer, Principal Software Architect at QAware)
Abstract:
Cloud-native applications are popular these days. They promise superior reliability and almost arbitrary scalability. They follow three key principles: They are built and composed as microservices. They are packaged and distributed in containers. The containers are executed dynamically in the cloud. But all this comes at a price: Added complexity! Suddenly you need to consider cloud-native design principles such as service discovery, configuration, resilience, health checks and diagnosability.
While current Java EE versions do not (yet) have dedicated APIs to fully address these principles, they do provide APIs and extension points to retrofit these concepts easily with only a few lines of glue code into your plain Java EE microservice.
This code intense session will present how we have built a fully cloud-native Java EE based system consisting of several microservices for a large German car manufacturer in only three months. We will share our experiences as well as working code examples on how we leveraged and combined standard Java EE APIs and well known open source components to
do the heavy cloud-native lifting.
Cloud native applications are popular these days. They promise superior reliability and almost arbitrary scalability. They follow three key principles: they are built and composed as microservices. They are packaged and distributed in containers. The containers are executed dynamically in the cloud. But all this comes at a price: added complexity! Suddenly you need to consider cloud native design principles such as service discovery, configuration, resilience, health checks and diagnosability.
While current Java EE versions do not (yet) have dedicated APIs to fully address these principles, they do provide APIs and extension points to retrofit these concepts easily with only a few line of glue code into your plain Java EE microservice.
This code intense session will present how we have built a fully cloud-native Java EE based system consisting of several microservices for a large German car manufacturer in only 3 months. We will share our experiences as well as working code examples on how we leveraged and combined standard Java EE APIs and well known open source components to do the heavy cloud-native lifting. #Javaland #CloudNativeNerd #qaware
Spring Boot - Microservice Metrics MonitoringDonghuKIM2
마이크로서비스 아키텍쳐에서의 분산된 서비스간의 모니터링 방법을 소개합니다.
- Microservice Monitoring with Service Discovery (Eureka) Spring Boot Admin
- Microservice Monitoring with Service Discovery (Consul), Prometheus, Grafana
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...Craeg Strong
This case study describes how we leveraged serverless technology and the AWS serverless application model (SAM) to support the needs of virtual training classes for a major US Federal agency. Our firm was excited to be selected as the main training partner to help a major US Federal government agency roll out Agile and DevOps processes across an organization comprising more than 1500 people. And then the pandemic hit—and what was to have been a series of in-person classes turned 100% virtual! We created a set of fully populated docker images containing all of the test data, plugins, and scenarios required for the student exercises. For our initial implementation, we simply pre-loaded our docker images into elastic beanstalk and then replicated them as many times as needed to provide the necessary number of instances for a given class. While this worked out fine at first, we found a number of shortcomings as we scaled up to more students and more classes. Eventually we came up with a much easier solution using serverless technology: we stood up a single page application that could kickoff tasks using AWS step functions to run docker images in elastic container service, all running under AWS Fargate. This application is a perfect fit for serverless technology and describing our evolution to serverless and SAM may help you gain insights into how these technologies may be beneficial in your situation.
Empowering Magnolia for Enterprise Use Cases - Experience Reportbkraft
In this talk we give an overview about some special integration and extensibility problems which occurred in our projects so far and the way how they could be solved with Magnolia. This covers some examples like customization of the admin interface and workflows as well as issues concerning authentication via LDAP / SSO or document management.
On a more technical side of things, we will present a system architecture for handling high-volume User Generated Content traffic, e.g. large amounts of page-comments being submitted in short time. The purpose of this architecture is to ensure CMS availability during such UGC peak loads.
This will be followed by an application demo showing an integration of the Google Web Toolkit (GWT) within the Magnolia 4.3 admin-interface, here used for moderating page comments. We'd like to share our experiences with this approach, and provide some background on its motivation and applicability.
Message queuing is becoming an essential part of modern architectures and essential for asynchronous architectures and microservices. In this session will be described the benefits of messaging systems, the software solutions that are available and typical messaging architectures. Examples will be made using Azure Storage Queues, Azure Service Bus and RabbitMQ. This presentation is primarily about messaging, however as this session is for tech hipsters, the demos will be done giving an extensive introduction to Azure functions, Azure Resource Manager Templates, .Net core and Docker.
Similar to Massaging the Pony: Message Queues and You (20)
Work is not a Dare: Tips for Building Inclusive TeamsShawn Rider
All too often, working on a team becomes a never ending sequence of dares. This applies to all teams, but for development teams the problem has some recognizable patterns: Changes are submitted, approved and merged with discussions that take place over the heads of most of the team members -- or without explanation at all; projects lack the supportive tooling that makes work efficient and pleasurable for all of the roles on a team; developers are told to “own” a problem and sent off alone as if on some mythical hero quest. This is a set of dares. We dare you to speak up. We dare you to ask for explanation of code you do not understand. We dare you to figure out how to create your own tools. We dare you to find an end-to-end solution in isolation that the rest of the group will deem worthy.
The dares may not be explicit, but the implied risk involved in speaking up, asking for help, or seeking collaboration is often real: Our reactions to the behaviors listed above are used as indicators of how smart and good we are. These behaviors, and many others that follow along the same lines, create significant barriers to building and operating inclusive teams that can successfully leverage members from varying backgrounds, with varying levels of training, and with varying subject matter expertise.
This presentation will offer ideas for how teams can become more inclusive in order to create a positive, productive environment that allows all members to maximize their efficiency and pleasure. There are quite a few steps an organization can take to improve team structure and processes, but to create an inclusive environment the key concept is support. Putting mutual support, whether requested or not, at the base of every decision we make is the best way to create an inclusive team that builds the commitment and investment of its members while building a product that represents them.
An introduction to SASS and how to use SASS and SCSS to theme websites. There is a complimentary github repo that goes along with this presentation as a demonstration of the techniques discussed: http://shawnr.net/sass-themes
A brief introduction to the Yeoman workflow, including some useful links and tips for getting started. This presentation was delivered at the April 14 Meetup of the Seattle University Web Developers Meetup (http://www.meetup.com/Seattle-University-Web-Developers-Meetup/).
The Yeoman workflow provides not only a useful development environment and setup, but a ready learning tool that you can use to explore brand new approaches and architectures. Easily scaffolding projects enables you to see the way others approach organizing their work and setting up their workflow, which allows you to become a better developer.
Barbarians at the Gate: Games and CultureShawn Rider
This is a presentation discussing the recent #GamerGate phenomenon prepared for a guest lecture in Sonora Jha's Media Study course at Seattle University.
Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django SiteShawn Rider
This talk details the history of the PBS TeacherLine website, the first Django project launched to production at PBS in 2007. It discusses the challenges, successes, and failures of maintaining the site.
I gave a talk at the Art Institute of Washington DC's "Pizza With the Pros" event to a group of Web Design and other media art students. This presentation was geared towards this group of students, ranging from Freshmen to Seniors, with the goal of delivering some tips to help them get ahead in the world of Web Design.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
1. Massaging the Pony:Message Queues and You Shawn Rider PBS Education DjangoCon 2010 http://www.flickr.com/photos/funtik/1175522045
2. What is a Message Queue? A system for enabling asynchronous processing of discrete tasks. Super awesome. http://www.flickr.com/photos/gadl/89650415
3. What are they good for? Alleviate server issues by offloading processing http://www.flickr.com/photos/islandgyrl/3197469932
4. What are they good for? Make better user experiences http://www.flickr.com/photos/bbaltimore/6779682
5. What are they good for? Increase the reliability of third party service integrations.
6. What are they good for? Background media processing http://www.flickr.com/photos/factoryjoe/2882992091
7. What are they good for? Repeating Tasks can replace Cron jobs Keep all your code in your project
8. Available MQ Solutions There are many solutions out there. To name a few of them: RabbitMQ Amazon Simple Queue System Apache MQ Gearman OpenAMQ Peafowl Q4M Starling Sun Java System Message Queue
9. Message Queue Protocols AMQP: Advanced Message Queuing Protocol JMS: Java Messaging Service STOMP: Streaming Text Oriented Messaging Protocol
10. Criteria for Broker Selection The following criteria were important to us in selecting a solution. You may have some different needs. Handling exceptions and recovery Low level of required maintenance Ease of deployment Persistent queuing Community support What language is it written in? How compatible is that with our current systems? Cluster support
11. Failsafe MQ Brokers Must be able to survive a server failure. Upon restarting the MQ Broker, processing should resume from the last un-processed messages in queues
12. Queue Durability The Messages Queue Broker must be able to reconstruct the queues when it is restarted. http://www.flickr.com/photos/raul/846318014
13. Message Persistence The Messages (tasks to be completed) must persist between shutdowns and restarts of MQ Server
16. MQ in Development Environs It is important to be able to develop Message Queue tasks in Django without being concerned about running the broker process, queue setup, persistence etc.
17. MQ in Development Environs CARROT_BACKEND = ‘qhettoq.taproot.Database’ Carrot can be set up to use different queuing backend for development purposes GhettoQ provides database backend for carrot where a database serves as the queue storage The broker is a simple Django application that monitors the queue in DB Inefficient, therefore only suitable for development environments
18. Ease a future MQ implementation Isolate functionality into reusable components.
20. Django, HTTP Requests & MQ Most functionalities provided throughDjangoapplications are tightly coupled with HTTP requests e.g. form data processing In order to asynchronously execute a task, Celery (any task management platform) must serialize & store parameters HTTP requests are usually large and not easily serializable. e.g. WSGI requests
23. Making Message Queue Tasks It is fast and easy to add a decorator to specific functions to create Message Queue tasks. from celery.decoratorsimport task @task def add(x, y): return x + y
25. Then What? Some Message Queue tasks can complete with no notification required. For other tasks: Notify by email Use an AJAX listener to notify users Some other messaging
26. In Review Choose your MQ solution wisely Set up a robust system Leverage your existing code Replace trouble spots as they come up Profit!
28. References and Links Second Life’s Survey of Message Queues:http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes Ask SolemHoel’sGithub Repos: http://github.com/ask Celery Project: http://celeryproject.org/ PickleableHttpRequest by NowellStrite (@nowells) http://gist.github.com/571027 Special thanks to TarequeHossain (http://codexn.com)
Editor's Notes
Example from TL about bulk refunds and paypal.
Cron jobs essentially pass control of your code to the operating system. Although the Cron job is a valuable tool, it’s not the only option.
Because a Message Queue Broker is a separate system that your project interfaces with, you could feasibly use many different apps created in many different languages.
Cluster support will be a priority for a lot of people, but it was not a priority for us. (Cluster support is the ability to have a cluster of MQ Brokers.)
To achieve this, we consider two concepts (on next slides).
This is what that looks like in production. Many of these components exist on dedicated servers and/or server clusters.
Some people who are more familiar with Carrot and Celery might wonder why not use the “always eager” setting, which processes MQ tasks in real time. However, in our experience that setting does not provide the effect we are after, and it is frustrating to get timeouts on long-running processes in development.
You want to replace trouble spots in your project as they come up. No need to rewrite your entire project right away.
The MockHTTP object always serializes GET and POST data. It then saves any additional HTTPRequest attributes specified when it is called.