Devon

Home/Devon

About Devon

I am an entrepreneur, traveler, speed demon, and so much more

Spring AWS SQS Queue Problem QueueDoesNotExistException

I have been working building a Spring Boot application running at AWS. Today I was working on setting it up to receive SQS messages. Like many things in Spring Boot, it is remarkably simple. Just create a method with the @SQSListener annotation like this:

@SqsListener(“queue-name”)
public void queueListener(String message, @Header(“SenderId”) String senderId) {
// Do stuff…
}

In all the documentation I read, the “queue-name” was a short name, like the Name of the Queue. However, when I used my Queue’s name I got the following error:

Ignoring queue with name ‘AGEventQueue’: The queue does not exist.; nested exception is com.amazonaws.services.sqs.model.QueueDoesNotExistException: The specified queue does not exist for this wsdl version. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID:XXXXXX

The fix is to use the Queue’s URL instead of the name. None of the documentation I was reading pointed that out, so I’m writing it here!

OWC Thunderbolt 3 Dock Review

I was lucky enough to receive a pre-release demo unit of OWC’s upcoming Thunderbolt 3 Dock and I wanted to write a review of my experience with it.  I’ve had one of the new 15” Apple MacBook Pro laptops with Thunderbolt 3 since they were release.  Since that day I’ve been waiting for someone to release a Thunderbolt 3 dock.  Why?

My primary work location is my home office, with two Samsung 4k monitors, and a Rain Design stand for my laptop.  However I often move throughout the day, working outside, at a coffee shop, heading to a meeting, etc… So I’m plugging and unplugging my laptop at the desk a couple times a day minimum.  Without a Thunderbolt 3 dock, this involved at least three cables:  The USB-C power supply, a Thunderbolt 3 to Thunderbolt 2 adapter, plugged into a Thunderbolt 2 cable, plugged into a Belkin Thunderbolt 2 dock, which feeds one of my 4k displays, and a USB hub, etc…, and a Thunderbolt 3 to Thunderbolt 2 adapter, plugged into a Thunderbolt 2 to DisplayPort adapter, plugged into the second 4k display.  Got all that?  It’s a mess.

Theoretically Thunderbolt 3 solves that mess as it can carry two 4k video signals, plus USB, plus deliver power to the laptop, and more.  However without a Thunderbolt 3 dock, that’s all it has been for several months: a theory.

The OWC Thunderbolt 3 Dock makes that promise a reality.

The pre-release dock I received came in retail packaging, and was Space Grey, which matched my laptop perfectly.  The dock is a very well made feeling piece of hardware, with smooth surfaces, rounded corners, and goes well with high end Apple hardware.

It has a separate power brick, and offers a multitude of ports.  On the rear of the dock are four USB 3.1 ports, including a high amperage quick charge port (which retains high-throughput data transfer capabilities).  A S/PDIF port for digital audio output is next.  Followed by a FireWire 800 port for legacy hardware.  I appreciate the inclusion of this port, as many people have an investment in high-end FW800 peripherals.  There’s a gigabit ethernet jack, which I still strongly prefer while I’m at my desk for backups, media streaming, and more.  Next along the slim case are two Thunderbolt 3 ports, one of which will be used to connect to your laptop, the other will be left open to attach or chain additional Thunderbolt 3 devices.  Then there’s a miniDP graphics port, and finally the power supply input jack.

On the front of the dock is another high amperage/fast charging USB 3.1 port, next to an analog audio input and output port for headphones and headsets.  And finally there is a built-in SD card reader.  All of the ports feel well made, and plugs slot in smoothly and solidly.

I have one of my 32” 4k displays plugged into the miniDP port, and the other plugged into a USB-C to DisplayPort adapter, which is plugged into one of the Thunderbolt 3 ports.  The other Thunderbolt 3 port runs to my laptop on it’s stand.  I am using ethernet when at my desk, and am using several of the rear USB ports, including the high power output one for my iPhone dock.

Now, when I return to my home office desk, I place my laptop on the stand, and plug in a single Thunderbolt 3 cable (instead of the 3+ cables before).  My two 4k external displays wake up, and I get my three display setup automatically.  All the USB hardware on my desk works, and the laptop is powered.  It’s amazingly smooth, and makes frequent roaming to and from my home office much easier.  It’s also dramatically reduced the cable and power supply clutter as I’ve replaced myriad adapters, docks, power supplies, etc… with a much more streamlined solution.

I do have two minor complaints however.

First I wish there were two miniDP ports instead of just the one.  For folks with dual monitor setups like myself, there aren’t any free Thunderbolt 3/USB-C ports left.  I’d much rather have had two miniDP ports, leaving the second Thunderbolt port open for other devices.  Now if I get any Thunderbolt or USB-C peripherals, I will need a second cord running to my laptop.

Secondly, the power output of the dock is only 60W.  This is perfect if you have a 13” MacBook Pro as it matches that machine’s charger.  However, if like me, you have a 15” MacBook Pro that comes with an 85W charger, you can run into scenarios where the dock cannot deliver enough power to keep up with the laptop’s demand.  It’s rare, but I’ve had a few times where my video conferencing software, coupled with using Eclipse and some typical software slowly drained my battery from 80% to 70% over about 90 minutes.  When the video call ended, the battery slowly charged back up.

If you routinely run power intensive tasks you may need to use the 85W power supply that came with your laptop.  More often  is the scenario where you’ve run the battery down while away from your dock, you return, plug in your laptop, and see “20 hours to full charge”.  I would love to see this dock offered with an 85W power output.

Pros:

  • Great build quality
  • Attractive design that works well with your Apple hardware
  • Strong selection of ports (especially if you are only using one external display)
  • Works perfectly right out of the box.  This shouldn’t be such a surprise, but given some of the hardware docks and peripherals I’ve tested lately…
  • Two Year Warranty

Cons:

  • 60W Power Output can fall behind the demands of a busy 15” MacBook Pro
  • One miniDP port means if you have two external displays you have no Thunderbolt 3 port available on the dock.

In summary, I really like this dock.  I would recommend it to anyone with a Thunderbolt 3 MacBook Pro.

Session and Memory Leak on Wildfly 10

I recently re-wrote 10MinuteMail, my secure temporary email service, updating it from Seam 2 and JBoss 4.2 to Deltaspike and Wildfly 10.  Unfortunately I noticed a memory leak in the JVM.  During beta testing, the JVM heap usage would slowly grow, over 1-2 weeks until it reached an OOM (out of memory condition).

Memory Leak in the Old Gen on Wildfly 10

I performed analysis on heap dumps taken at various stages of memory consumption and discovered that the issue was HttpSessionImpl objects being held onto by the com.sun.faces.application.WebappLifecycleListener’s activeSessions property.  Since 10MinuteMail does some “manual” session expiration and management, and the new application is AJAX heavy, I figured I was doing something wrong.  But thanks to some great support on the JBoss.org forums, I soon learned that there is a bug in the Undertow sub-system that ships with Wildfly 10.0.0.FINAL which keeps old sessions around, causing a memory leak – 

[UNDERTOW-657] HttpSession never removed from activeSessions – JBoss Issue Tracker

The fix is to replace the Undertow modules that come with Wildfly 10 with the latest stable release versions.  You can find more details here – https://developer.jboss.org/message/959286#959286

Now my application works as expected with no memory leak or abnormal numbers of session objects.

Oracle Commerce Cloud – The Good, Bad, and Ugly

What is Oracle Commerce Cloud?

Oracle has been working on their Oracle Commerce Cloud offering for a while, pre-released first in the early Spring of 2015, and publicly launched in June 2015.  It was the focus of the Commerce section of the recent Oracle CX 2016 conference in  April 2016.

The Commerce Cloud offering is a SaaS eCommerce platform based on the industry leading ATG eCommerce platform Oracle acquired when it purchased ATG in late 2010.

The Good

I absolutely understand why Oracle should be building a SaaS eCommerce solution.  There needs to be a solid Oracle solution focused on the traditional mid-market of retailers.   ATG Oracle Commerce (On Premise) is not necessarily a great fit for many mid-market retailers.  The platform’s strong suits of scalability and flexibility are often more than a retailer doing 20-75 million dollars annually on their online channel needs, and both strengths come with costs: implementation and on-going development on a complex platform (rather than a simple storefront application) and hosting and 24×7 support for the infrastructure and application suite stack.

Currently the mid-market eCommerce market is dominated by Magento (On Prem and SaaS options) and DemandWare (Saas).  Both of which offer relatively quick and cheap implementations and on-going costs (when compared to Oracle Commerce) for mid-market customers, and often provide enough features and customizability to meet the needs of that market sector.  Both Magento and DemandWare are maturing and pushing further up-market, taking on larger and larger clients with higher traffic and higher revenue websites.

eCommerce Platforms Fit by Revenue including Oracle Cloud Commerce

It makes perfect sense for Oracle to push downward into the mid-market, to compete against DemandWare and Magento, not only to protect against marketshare erosion by the encroaching mid-market players, but also to provide what no one else really has: a smooth growth path for companies who’s eCommerce channels will grow from “mid-market” to “enterprise”, or who’s growth will necessitate features and customizations unavailable on traditional mid-market solutions.

Oracle has a lot of strong assets which should make it possible to deliver a solid mid-market SaaS eCommerce offering and grow marketshare in that ecosystem.  They have a world class mature eCommerce platform in ATG Oracle Commerce, they have development, hosting, sales, and marketing assets which are virtually unparalleled.

The Bad

Unfortunately the Oracle Commerce Cloud solution isn’t a competitive offering for the mid-market yet.  Even after having been live for a year, the feature-set is woefully limited, delivering far less functionality than even the free version of Magento.  The vast majority of the ATG Oracle Commerce features are unavailable, or badly hamstrung.

I’ve been told, although I have no way to confirm this myself, that the Oracle Commerce Cloud solution is built not on the current ATG Oracle Commerce platform (version 11.2), but instead is based on version 10.2, released over three years ago.

The biggest “Cloud” SaaS advantage, effortless auto-scaling, doesn’t exist for Oracle Commerce Cloud.  Clients have to provide traffic numbers ahead of time, and Oracle doesn’t take responsibility for performance or availability problems if traffic exceeds those estimates.  The “Cloud” in Commerce Cloud isn’t what you’d expect.

Every client and system integrator I have spoken with who has hands-on Oracle Commerce Cloud experience has complained about the serious limitations, lack of features, broken functionality, and lack of extensibility of the platform in its current state.

The UI is pretty, but is not well suited to managing large catalogs.  Promotions are limited to only four basic types and don’t support common scenarios such as BOGO or category or brand driven multi-item purchase discounts.  There’s no support for standard payment types such as Store Credit or Gift Cards.  Error messages in the admin are unhelpful things like “Error 20,000”.  The promised integrations with Oracle retail products like CPQ don’t exist yet.  There’s no hierarchy or inheritance available for custom product types.  There are performance issues with large catalogs and with large numbers of custom product or SKU attributes.  There are significant FEO and end user performance problems.  Etc…

Oracle Commerce Cloud just isn’t ready to compete with Magento and DemandWare.  I truly wish it was, and I hope that it will achieve feature parity with the incumbent offerings soon.  There is an aggressive roadmap for the Oracle Commerce Cloud offering, however there haven’t been many (any?) significant changes in what is being shown in demos between the initial release a year ago, and the Oracle CX 2016 conference a few weeks ago.

Oracle has certainly committed to the “Cloud” approach.  At an enterprise level, Oracle has Cloud Fever.  Cloud is the new focus across all their products and services.   In the eCommerce universe Oracle is focusing all their sales and marketing efforts behind the Oracle Commerce Cloud solution, so my hope is that the engineering resources brought to bear will be able to really challenge Magento and DemandWare in the SMB and mid-market.

The Ugly

The biggest issue that I have with the Oracle Commerce Cloud is that Oracle is selling it to EVERYONE, mid-market, enterprise, and existing Oracle Commerce customers.  They are aggressively pitching it to clients where it is clearly NOT a good fit, and can’t possibly support the features and integrations the client needs.  The sales team is being strongly motivated to sell Commerce Cloud instead of “On Prem” as they get virtually no commission or quota progress for the much more mature and comprehensive ATG Oracle Commerce offering.

While there are some opportunities where Oracle Commerce Cloud is a good solution, at this point in time it’s much more likely that the client will discover the product does not actually meet their needs and will be unhappy, or they will realize that upfront and Oracle will lose the deal to DemandWare/Hybris/Magento instead.

Another major problem is that Oracle is publicly talking about Commerce Cloud 100% of the time.  The roadmap for that solution is detailed and expansive.  In contrast the core ATG Oracle Commerce platform, which has been adopted as the core of eCommerce for hundreds of major global companies, has virtually no roadmap, and appears to be getting zero attention from Oracle (Sales, Marketing, Engineering).  At the Oracle CX 2016 conference, there was no content about Oracle Commerce, everything was focused on Commerce Cloud, even though most of the attendees focused on the eCommerce tracks were existing customers who have massive investments in their On Prem ATG Oracle Commerce platforms, and who couldn’t move to the Cloud solution (due to lack of features and integrations) even if they wanted to (which most do not).  These companies, as well as the ecosystem of Oracle Commerce system integrators, are feeling betrayed by Oracle, and are not seeing a viable future for the platform they have embraced so fully and invested in so heavily.

In my 18 years in the ATG ecosystem I have never heard so many long time ATG Oracle Commerce clients so angry, and talking so seriously about re-platforming on non-Oracle eCommerce solutions.  System Integrators who have been ATG shops since their creation are embracing Hybris and Magento because Oracle isn’t selling any new Oracle Commerce deals.  Oracle has a major damage control situation here, and I haven’t seen any sign that they realize it.

To be clear, I am a committed believer in the on-premise ATG Oracle Commerce platform.  It has the best technology, and is a great choice for large enterprise retailers (and others).  There are so many major companies who have fully invested in ATG Oracle Commerce, who could never move to a SaaS offering, that I feel there’s just no way for Oracle to pull the plug on such an important, and revenue generating, product offering.

Here’s hoping that Oracle’s “Cloud” frenzy doesn’t sink their leading position in the enterprise eCommerce market space, while they try to grab a little slice of the mid-market.

Further Reading:

GitHub to OmniFocus Integration

I’m thrilled to announce that I’ve written a GitHub to OmniFocus integration.  Track your GitHub issues from OmniFocus automatically!

This Ruby script is based on my Jira to OmniFocus integration, but uses the Octokit gem to pull issues from GitHub instead of Jira.  You can find it on GitHub here: https://github.com/devondragon/github-omnifocus

It is simple to install, and can be run on a schedule via cron, or via a LaunchDaemon on OS X.  One notable difference from my Jira to OmniFocus integration is that this script puts the body of the GitHub issue into the Note of the OmniFocus task.  This feature may be coming as an enhancement to the Jira integration soon.

If you have any problems or enhancement requests please create a GitHub issue on the project.  Thanks!