> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Que

export const VersionRequirements = ({versions = []}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const boundaries = {
    upper: " or lower",
    exact: "",
    lower: " or higher"
  };
  const containerStyle = {
    marginTop: "0.5rem",
    marginBottom: "1.5rem"
  };
  const lineStyle = {
    display: "block",
    margin: "0 0 0.35rem 0",
    fontSize: "0.875rem",
    lineHeight: "1.4"
  };
  const pillBaseStyle = {
    display: "inline-block",
    padding: "0.1em 0.4em",
    borderRadius: "0.25rem",
    border: "1px solid",
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "0.85em",
    fontWeight: 500
  };
  const pillColors = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#e9d5ff",
      color: "#9333ea"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#99f6e4",
      color: "#0d9488"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#bbf7d0",
      color: "#16a34a"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#bfdbfe",
      color: "#2563eb"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fecaca",
      color: "#dc2626"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fed7aa",
      color: "#ea580c"
    }
  };
  const defaultPillColor = {
    background: "#f4f4f5",
    borderColor: "#e4e4e7",
    color: "#52525b"
  };
  const getPillStyle = name => ({
    ...pillBaseStyle,
    ...pillColors[name] || defaultPillColor
  });
  const getBoundText = bound => {
    return boundaries[bound] || boundaries.lower;
  };
  return <div style={containerStyle}>
      {versions.map((v, i) => <p key={`${v.name}-${v.version}-${v.bound || "lower"}-${i}`} style={lineStyle}>
          This feature requires{" "}
          <code style={getPillStyle(v.name)}>{v.name}</code> version {v.version}
          {getBoundText(v.bound)}.
        </p>)}
    </div>;
};

<VersionRequirements
  versions={[
{ name: "AppSignal for Ruby", version: "2.4.1" }
]}
/>

[Que](https://github.com/chanks/que/) is een hoogpresterend alternatief voor DelayedJob of QueueClassic dat de betrouwbaarheid van uw applicatie verbetert door uw jobs te beschermen met dezelfde ACID-garanties als de rest van uw gegevens.

Als Que wordt gedetecteerd wanneer AppSignal start, haken we automatisch in op Que om excepties en prestatieproblemen te volgen.

Jobnamen worden automatisch gedetecteerd op basis van de naam van de Que-workerklasse en worden voorzien van de methodenaam `run`, wat resulteert in iets als: `MyWorker#run`.

U herkent events van Que aan de naam `perform_job.que` in de event-tijdlijn op de performance-incidentdetailpagina.

## Ondersteuning voor Active Job

De Que-integratie is compatibel met [Active Job](/ruby/integrations/active-job).

Upgrade naar versie 2.11.0 van de Ruby-gem of nieuwer voor verbeterde ondersteuning.

## Voorbeeldapplicatie

We hebben een voorbeeldapplicatie in onze examples-repository op GitHub.

* [AppSignal + Rails 5 + Que][example-app]
  Het voorbeeld laat zien hoe u een Rails 5-app met Que opzet, gemonitord door AppSignal.

[example-app]: https://github.com/appsignal/appsignal-examples/tree/rails-5+que
