Despite years of use and improvements there are still surprises and gotchas that exist in docker that can easily catch people off guard. This article covers a few such surprises in the default docker (and docker-compose) configurations that users should be aware of. [Continue reading...] Docker In 2020: Strange Surprises And Unexpected Gotchas
Stripe is one of the most developer-friendly payment processors available today, having extensive and well-documented APIs and SDKs enabling you to finely customize your customer payment flow. If you have a simple use-case or would prefer to offload the majority of the checkout process, Stripe also provides Stripe Checkout where Stripe themselves will directly handle collecting the payment information and charging the customer. [Continue reading...] Stripe Checkout With Django
Everyone is now well aware of the COVID-19 virus outbreak and the need to reduce person-to-person exposure and self-quarantine. Larger companies have no doubt been busy implementing their business continuity plans to cope with the issue however many smaller companies don't have the resources available to prepare for these types of disaster scenarios ahead of time. As the reality of this situation starts to take hold, many businesses that were initially reluctant to make adjustments are now scrambling for options on how to continue to conduct business in an unexpected, and likely prolonged, work-from-home environment. Below I've put together some resources and tools that may be of use to those unfamiliar with these types of setups. [Continue reading...] Small Business Work-From-Home Survival Guide
RabbitMQ is a robust message queue which features high message throughput, configurable acknowledgements, an intuitive management GUI and wide client library support. Written in Erlang, RabbitMQ has built a reputation for outstanding stability which makes it a popular choice as a core infrastructure system.
As you plan your overall messaging architecture a universal requirement is to minimize downtime from any single point of failure. Fortunately RabbitMQ comes equipped with built-in high-availability facilities, your tolerance for message loss will determine the which of the available HA options and approaches fits best. This post will mainly focus on setting up RabbitMQ mirrored queues which provide the highest protection against message loss. [Continue reading...] High Availability RabbitMQ With Mirrored Queues
The original JMS spec first arrived in 2001 with JSR 914. At the time several enterprise messaging systems were already widely available however each had their own unique features and mechanisms which required software that wanted to talk on a given messaging bus to be tightly-coupled to the specific messaging system implementation in use.
Given that "tightly-coupled" is something you want to avoid in your enterprise systems, there was a push to abstract away these implementation-specific system aspects from the messaging client code. To address this, the JMS was developed to define a standardized, consistent programming interface that would work across different JMS-provider implementations. [Continue reading...] Guaranteed Topic Delivery using ActiveMQ Virtual Destinations