Course Overview:
This training program is aimed at building high scalable server applications using Node.js and RabbitMQ. Participants will learn how to build server APIs using Node.js and understand and exploit the benefits of “Single Threaded Event Loop”. Participants will also learn to build scalable solutions using RabbitMQ as the messaging platform for communication between services and learn to exploit the various messaging strategies for better scalability and reliability.
Course Objectives:
- This workshop is aimed at imparting the required know-how to build and manage applications using Node.js & RabbitMQ
Pre-requisites:
- Experience with the Linux command line interface.
- An understanding of enterprise application development concepts.
Target Audience:
- IT specialists
- Developers
- System Architects
Course Duration:
- 35 hours – 5 days
Course Content:
MESSAGING SOLUTIONS USING RABBITMQ
- Introduction to RabbitMQ
- Understanding Queueing Architecture
- Message Queueing
- Uses for Message Queueing
- Core Concepts
- AMQP Messaging Standard
- Exchanges
- Queues, Bindings & Consumers
- Standard Queue
- Worker Queue
- Publish & Subscribe
- Direct Routing
- Exchanges & Bindings
- Direct Exchange
- Default Exchange
- Topic Exchange
- Fanout Exchange
- Dead Letter Exchange
- Understanding Messaging
- The role of a consumer
- The role of a producer
- Bindings consumers and producers
- Messages and durability
- How to verify delivery
- ES6
- New in ES6
- Classes
- let and const
- Arrow functions
- Enhanced Object Literals
- Array & Object Destructuring
- Spread Operator
- Generators and Iterators
- Symbols
- Comprehensions
- Async Programming using Promises
- Async Await
BUILDING APPLICATIONS USING NODE.JS
- Introduction to Node.js
- Installing Node.js
- Node’s Event Loop
- Alternatives to Node.js
- Writing asynchronous code
- Modularizing code
- Understanding built-in modules
- Techniques for modularizing JavaScirpt code
- Using require() to modularize application code
- Using npm for third-party modules
- Handling Exceptions
- Events and Streams
- Understanding Events
- EventEmitter class
- Understanding Streams
- Reading and writing streams
- Using pipe()
- Accessing Local Resources
- Process Object
- Manipulating File System
- Understanding Buffers
- js and the web
- Handling web requests
- Building a web server
- Understanding the need for web sockets
- Realtime interaction using socket.io
- Building web API using Express.js
- Installing Express.js
- Routing
- Parameters and queries in routing
- Working with cookies and sessions
- Authentication and authorization
- Error Handling
- Data Persistence in Node.js
- Installing SQLite client module
- Establishing connections
- Executing Queries
- Binding Parameters
- Inserting, Updating and Deleting Data
- Building Network Servers & Clients
- Creating a TCP Server
- Creating a TCP Client
- Creating a HTTP/HTTPS client
- Using the Restler module
- Testing Node.js Applications
- Introduction to TAP
- Installing node-tap
- Test Organization
- Performing Assertions
- Testing Async with Promises
- Mocking dependencies using Nock
- Test Coverage
- Scaling Node applications
- The Child process model
- exec, spawn, and fork functions
- Using the Cluster module
- js Eco System
- ONode Packages
- Packages of interest
- Deciding Factors
- Debugging Node Applications
BUILDING API FOR MESSAGING INTERFACES USING NODE.JS & RABBITMQ
- Building RabbitMQ service consumers
- Installing RabbitMQ Client
- Connecting to Message Broker
- Sending Messages
- Receiving Messages
- Implementing Queuing Code
- Topic Based Publisher & Subscriber for Notifications
- Simple Publish & Subscribe
- Publisher Confirmation
- Polymorphic Publish and Subscribe
- Controlling Queues and Exchange Names
- Remote Procedure Calls ?Synchronous RPC
- Asynchronous RPC oTargeted Messaging
- Using Send and Receive Pattern oFlexible Routing
- Topic based publish & subscribe
RABBITMQ ADMINISTRATION
(Duration for this topic is reduced because of the usage of managed services)
- Administering RabbitMQ oClusters & Nodes
- Creating and starting a managed instance
- Managing Connections & Channels
- Starting and stopping nodes
- RabbitMQ configuration files
- How to manage privileges
- Viewing statistics and analyzing logs
- Sending alerts
- How to set up parallel processing
- High availability with cluster
- Architecture of a cluster
- Queues in a cluster
- Setting up a test cluster
- Distributing the nodes to more machines
- How to preserve messages: mirrored queues
- Implementing failover and replication
- Setting up a load balancer-based master/slave
- Installing the Shovel plugin
- Configuring and running Shovel
- Web tools to administer RabbitMQ
- The RabbitMQ Management plugin
- Managing RabbitMQ from the web console
- Administering users from the web console
- Managing queue from the web console
- Using the command line interface
- RabbitMQ and the REST API
- REST API features
- Accessing statistics
- vhost and user provisioning
- Monitoring and securing RabbitMQ
- Message durability and Message acknowledgement
- Memory usage and process limits
- Setting up SSL